Converta todas as seqüências de caracteres em uma lista para int

603

No Python, quero converter todas as strings de uma lista para números inteiros.

Então, se eu tiver:

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

Como faço para:

results = [1, 2, 3]
Michael
fonte
1
Veja isso: stackoverflow.com/questions/642154/…
Micah Carrick

Respostas:

1171

Use a mapfunção (no Python 2.x):

results = map(int, results)

No Python 3, você precisará converter o resultado de mappara uma lista:

results = list(map(int, results))
cheeken
fonte
23
Quero ressaltar que o pylint desencoraja o uso de map, portanto, prepare-se para usar a compreensão da lista de qualquer maneira, se você usar esse padrão. :)
ThorSummoner
6
O inverso é (para converter uma lista de int para lista de seqüências de caracteres): map (str, results)
Ali ISSA
12
Você pode simplificar esta resposta: use sempre list(map(int, results)), ela funciona em qualquer versão do Python.
Mvp
378

Use uma compreensão da lista :

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

por exemplo

>>> results = ["1", "2", "3"]
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
Chris Vig
fonte
30
A compreensão da lista também é ótima. Para o OP - veja aqui para ver um bom contraste de compreensão de mapa e lista: stackoverflow.com/questions/1247486/…
cheeken
3

Um pouco mais expandido do que a compreensão da lista, mas também é útil:

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)

por exemplo

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

Além disso:

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