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: 14019
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'
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
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: 4185
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: 690
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