Seite 1 von 1

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

Verfasst: Samstag 25. August 2018, 18:48
von naheliegend
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ß

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

Verfasst: Samstag 25. August 2018, 19:06
von __blackjack__

Code: Alles auswählen

In [1]: ''.join(map(str, [1, 8, 9, 3]))
Out[1]: '1893'

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

Verfasst: Samstag 25. August 2018, 19:15
von naheliegend
__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

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

Verfasst: Samstag 25. August 2018, 19:41
von noisefloor
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

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

Verfasst: Samstag 25. August 2018, 19:45
von narpfel
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