python liste in int konvertieren?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
import functools  

list = ['8', '7', 6,5]

zahl = int(functools.reduce(lambda a, b : a + str(b), list, ""))

print zahl

Ausgabe

8765
Dory1  30.10.2018, 18:48

Wobei das auch schöner geht:

list = ['8', '7', 6,5]

zahl = int("".join(map(str, list)));

print zahl
1
XamaX563 
Fragesteller
 30.10.2018, 19:03
@Dory1

Vielen Danke euch beiden, es funktioniert! :) Wäre lieb wenn ihr noch beschreibt was (map(str, list)) bedeutet. Mit der Join Methode fügt man ja in diesem Fall dem leeren String, Sachen hinzu, oder?

0
Dory1  30.10.2018, 19:30
@XamaX563

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).

0
kymcwejzjmipsco  31.10.2018, 07:12
@Dory1

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! ;)

0

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
Woher ich das weiß:Berufserfahrung – Softwareentwickler f. Web, Win. & Linux (seit 2001)
XamaX563 
Fragesteller
 30.10.2018, 19:04

Danke für deine Antwort! Sehr hilfreich :)

0

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!

Woher ich das weiß:eigene Erfahrung