python liste in int konvertieren?
Ich habe Liste mit list = ['8', '7', 6,5]
wie bekomme ich daraus einen Integer i = 8765?
4 Antworten
import functools
list = ['8', '7', 6,5]
zahl = int(functools.reduce(lambda a, b : a + str(b), list, ""))
print zahl
Ausgabe
8765
Ich habe beide Kommentare geschrieben :)
map wendet eine Funktion, in diesem Fall str, auf jedes Element eines Arrays an.
Die einzelnen Elemente werden also zunächst zu einem String umgewandelt, so dass alle Elemente mittels join letztlich zu einem einzigen String verbunden werden können.
Der leere String ist das Zeichen, das als Verbindungs-Zeichen zwischen den einzelnen Elementen des Arrays verwendet werden soll (also keines in diesem Fall).
Die Kombination von join() mit map() war auch mein erster Gedanke, hab deine Antwort aber erst nach dem Abschicken meiner Antwort gelesen.
Der Ruhm gebührt also nur dir allein! ;)
Nachdem schon einige Versionen mit Einzeilern genannt worden hier eine weitere Variante dir für einen Anfänger einfacher zu verstehen sein wird:
l = ['8', '7', 6, 5]
s = ""
for nr in l:
s += str(nr)
i = int(s)
print(i) # => 8765
Die kürzeste Lösung ohne zusätzliche Imports dürfte das hier sein:
l = ['8', '7', 6, 5]
i = int(''.join(map(str, l))
print(i, type(i)) # 8765 <class 'int'>
Disclaimer: Zwei Idioten, ein Gedanke ... Dory1 hatte bereits exakt diese Lösung lange vor mir gepostet. Die Credits gehen also zu 100% an Dory1 im Kommentar unter der dazu gehörigen Antwort. Sorry, hab ich vorher nicht gelesen!
s="";
i=int(s.join( list ));
Wobei das auch schöner geht: