python liste in int konvertieren?

6 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

Wobei das auch schöner geht:

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

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

print zahl
1
@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
@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
@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ß:Beruf – Softwareentwickler f. Web, Win. & Linux (seit 2001)

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

Ich weiß leider nicht ganz genau wie man es in Python umsetzt, aber du könntest einen string erstellen, dann mit einer Schleife jeden Index durchgehen und den Inhalt in den string hinzufügen.

Danach den string in int konvertieren.

Was möchtest Du wissen?