Liste mit einzelnen int's aneinanderreihen zu einer großen int

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

ich möchte aus:

Code: Alles auswählen

list = [1, 8, 9, 3]
einen int erzeugen der so aussieht:

Code: Alles auswählen

zahl = 1893
Wie kriege ich das möglichst elegant hin, ohne jeden einzelnen Eintrag in der Liste auszulesen? :-)

Gruß
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13268
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

In [1]: ''.join(map(str, [1, 8, 9, 3]))
Out[1]: '1893'
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

__blackjack__ hat geschrieben: Samstag 25. August 2018, 19:06

Code: Alles auswählen

In [1]: ''.join(map(str, [1, 8, 9, 3]))
Out[1]: '1893'
Thx, mir war die map() Funktion nicht bekannt. Danke
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

also basierend auf der Ausgangsfrage wäre doch

Code: Alles auswählen

>>>int(''.join(map(str, [1, 8, 9, 3])))
>>>1893
weil ohne `int` in String gebaut wird - und kein Integer-Wert, wie gewünscht.

Oder ohne Typkonvertierung:

Code: Alles auswählen

>>> liste = [1, 8, 9, 3]
>>> sum([10**count*number for count, number in enumerate(liste[::-1])])
1893
>>>
Gruß, noisefloor
narpfel
User
Beiträge: 646
Registriert: Freitag 20. Oktober 2017, 16:10

Eine weitere Möglichkeit wäre `reduce`:

Code: Alles auswählen

In [1]: from functools import reduce

In [2]: reduce(lambda acc, n: acc * 10 + n, [1, 8, 9, 3])
Out[2]: 1893
Antworten