Konwertuj wszystkie ciągi z listy na int

603

W Pythonie chcę przekonwertować wszystkie ciągi z listy na liczby całkowite.

Więc jeśli mam:

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

Jak to zrobić:

results = [1, 2, 3]
Michał
źródło
1
Zobacz to: stackoverflow.com/questions/642154/...
Micah Carrick

Odpowiedzi:

1171

Użyj mapfunkcji (w Python 2.x):

results = map(int, results)

W Pythonie 3 musisz przekonwertować wynik z maplisty:

results = list(map(int, results))
policzki
źródło
23
Chcę zauważyć, że pylint odradza korzystanie z niego map, więc przygotuj się do użycia list ze zrozumieniem, jeśli kiedykolwiek użyjesz tego standardu. :)
ThorSummoner,
6
Odwrotnością jest (aby przekonwertować listę liczb całkowitych na listę ciągów znaków): mapa (str, wyniki)
Ali ISSA
12
Możesz uprościć tę odpowiedź: po prostu zawsze używaj list(map(int, results)), działa dla dowolnej wersji Pythona.
mvp
377

Użyj zrozumienia listy :

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

na przykład

>>> results = ["1", "2", "3"]
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
Chris Vig
źródło
30
Rozumienie listy też jest świetne. Do OP - zobacz tutaj, aby zobaczyć ładny kontrast ze zrozumieniem mapy i listy: stackoverflow.com/questions/1247486/...
cheeken
3

Nieco bardziej rozbudowany niż lista, ale również przydatny:

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)

na przykład

>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]

Również:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list
2RMalinowski
źródło