Konvertieren Sie alle Zeichenfolgen in einer Liste in int

603

In Python möchte ich alle Zeichenfolgen in einer Liste in Ganzzahlen konvertieren.

Also wenn ich habe:

results = ['1', '2', '3']

Wie mache ich das:

results = [1, 2, 3]
Michael
quelle
1
Siehe dies: stackoverflow.com/questions/642154/…
Micah Carrick

Antworten:

1171

Verwenden Sie die mapFunktion (in Python 2.x):

results = map(int, results)

In Python 3 müssen Sie das Ergebnis von mapin eine Liste konvertieren :

results = list(map(int, results))
frech
quelle
23
Ich möchte darauf hinweisen, dass Pylint von der Verwendung von abrät. Bereiten Sie sich mapdaher darauf vor, Listenverständnisse trotzdem zu verwenden, wenn Sie diesen Standard jemals verwenden. :)
ThorSummoner
6
Die Umkehrung ist (um eine Liste von int in eine Liste von Zeichenfolgen umzuwandeln): map (str, results)
Ali ISSA
12
Sie können diese Antwort vereinfachen: Verwenden Sie list(map(int, results))sie einfach immer , sie funktioniert für jede Python-Version.
MVP
377

Verwenden Sie ein Listenverständnis :

results = [int(i) for i in results]

z.B

>>> results = ["1", "2", "3"]
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
Chris Vig
quelle
30
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/…
Cheeken
3

Ein bisschen erweiterter als das Listenverständnis, aber auch 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]

Ebenfalls:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list
2RMalinowski
quelle