Wie konvertiere ich alle Strings in einer Liste in Ganzzahlen?
['1', '2', '3'] ⟶ [1, 2, 3]
Michael
Wie konvertiere ich alle Strings in einer Liste in Ganzzahlen?
['1', '2', '3'] ⟶ [1, 2, 3]
frech
Gegeben:
xs = ['1', '2', '3']
Verwenden map
Dann list
um eine Liste von ganzen Zahlen zu erhalten:
list(map(int, xs))
In Python2, list
war seitdem unnötig map
eine Liste zurückgegeben:
map(int, xs)
Ich möchte darauf hinweisen, dass pylint von der Verwendung von abrät map
, bereiten Sie sich also darauf vor, Listenverständnisse trotzdem zu verwenden, wenn Sie jemals diesen Standard verwenden. 🙂
– ThorSummoner
12. Februar 2015 um 6:41 Uhr
Die Umkehrung ist (um eine Liste von int in eine Liste von Zeichenfolgen umzuwandeln): map( str, results)
– Ali IVSS
11. März 2017 um 22:08 Uhr
Sie können diese Antwort vereinfachen: einfach immer verwenden list(map(int, results))
es funktioniert für jede Python-Version.
– mvp
24. Januar 2018 um 18:50 Uhr
Ich möchte nur hinzufügen, dass der Typ der Kartenfunktion iterierbar ist, sodass Sie ihn technisch gesehen nicht in eine Liste konvertieren müssten, wenn Sie ihn durchlaufen würden.
– ThatOneAmazingPanda
31. Dezember 2020 um 16:38 Uhr
Chris Vig
Benutze einen Listenverständnis auf der Liste xs
:
[int(x) for x in xs]
z.B
>>> xs = ["1", "2", "3"]
>>> [int(x) for x in xs]
[1, 2, 3]
Das Listenverständnis ist auch großartig. Zum OP – siehe hier, um einen schönen Kontrast zwischen Karten- und Listenverständnis zu sehen: stackoverflow.com/questions/1247486/…
– frech
10. September 2011 um 2:08 Uhr
Es gibt mehrere Methoden, um Zeichenfolgennummern in einer Liste in Ganzzahlen umzuwandeln.
In Python 2.x können Sie die verwenden Karte Funktion:
>>> results = ['1', '2', '3']
>>> results = map(int, results)
>>> results
[1, 2, 3]
Hier gibt es die Liste der Elemente zurück, nachdem die Funktion angewendet wurde.
In Python 3.x können Sie dasselbe verwenden Karte
>>> results = ['1', '2', '3']
>>> results = list(map(int, results))
>>> results
[1, 2, 3]
Im Gegensatz zu Python 2.x gibt die Kartenfunktion von Here das Kartenobjekt zurück, dh iterator
was die Ergebnisse (Werte) nacheinander liefert. Aus diesem Grund müssen wir eine Funktion mit dem Namen as hinzufügen list
die auf alle iterierbaren Elemente angewendet wird.
Sehen Sie sich das Bild unten für den Rückgabewert von an map
Funktion und ihr Typ im Fall von Python 3.x
Die dritte Methode, die sowohl für Python 2.x als auch für Python 3.x gilt, dh Listenverständnisse
>>> results = ['1', '2', '3']
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
Danielcodes
Sie können String-Listenelemente einfach in Int-Elemente konvertieren, indem Sie die Schleifen-Kurzschrift in Python verwenden
Angenommen, Sie haben eine Zeichenfolge result = ['1','2','3']
Mach einfach,
result = [int(item) for item in result]
print(result)
Es gibt Ihnen Ausgabe wie
[1,2,3]
Patrick Artner
Wenn Ihre Liste reine Integer-Strings enthält, ist die akzeptierte Antwort der richtige Weg. Es wird abstürzen, wenn Sie ihm Dinge geben, die keine ganzen Zahlen sind.
Also: Wenn Sie Daten haben, die möglicherweise Ints, möglicherweise Floats oder andere Dinge enthalten, können Sie Ihre eigene Funktion mit Fehlerbehandlung nutzen:
def maybeMakeNumber(s):
"""Returns a string 's' into a integer if possible, a float if needed or
returns it as is."""
# handle None, "", 0
if not s:
return s
try:
f = float(s)
i = int(f)
return i if f == i else f
except ValueError:
return s
data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]
converted = list(map(maybeMakeNumber, data))
print(converted)
Ausgang:
['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']
Um auch Iterables innerhalb von Iterables zu handhaben, können Sie diesen Helfer verwenden:
from collections.abc import Iterable, Mapping
def convertEr(iterab):
"""Tries to convert an iterable to list of floats, ints or the original thing
from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
Does not work for Mappings - you would need to check abc.Mapping and handle
things like {1:42, "1":84} when converting them - so they come out as is."""
if isinstance(iterab, str):
return maybeMakeNumber(iterab)
if isinstance(iterab, Mapping):
return iterab
if isinstance(iterab, Iterable):
return iterab.__class__(convertEr(p) for p in iterab)
data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed",
("0", "8", {"15", "things"}, "3.141"), "types"]
converted = convertEr(data)
print(converted)
Ausgang:
['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed',
(0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order
Gemeinschaft
Etwas erweiterter als das Listenverständnis, aber ebenfalls nützlich:
def str_list_to_int_list(str_list):
n = 0
while n < len(str_list):
str_list[n] = int(str_list[n])
n += 1
return(str_list)
z.B
>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]
Auch:
def str_list_to_int_list(str_list):
int_list = [int(n) for n in str_list]
return int_list
Code Karbonat
Hier ist eine einfache Lösung mit Erklärung für Ihre Frage.
a=['1','2','3','4','5'] #The integer represented as a string in this list
b=[] #Fresh list
for i in a: #Declaring variable (i) as an item in the list (a).
b.append(int(i)) #Look below for explanation
print(b)
Hier, anhängen () wird verwendet, um Elemente (dh die ganzzahlige Version der Zeichenfolge (i) in diesem Programm) am Ende der Liste (b) hinzuzufügen.
Notiz: int() ist eine Funktion, die hilft, eine ganze Zahl in Form einer Zeichenfolge zurück in ihre ganzzahlige Form zu konvertieren.
Ausgabekonsole:
[1, 2, 3, 4, 5]
Daher können wir die Zeichenfolgenelemente in der Liste nur dann in eine Ganzzahl konvertieren, wenn die angegebene Zeichenfolge vollständig aus Zahlen besteht, da sonst ein Fehler generiert wird.