Convertir toutes les chaînes d'une liste en int

603

En Python, je veux convertir toutes les chaînes d'une liste en entiers.

Donc si j'ai:

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

Comment puis-je le faire:

results = [1, 2, 3]
Michael
la source
1
Voir ceci: stackoverflow.com/questions/642154/…
Micah Carrick

Réponses:

1171

Utilisez la mapfonction (en Python 2.x):

results = map(int, results)

En Python 3, vous devrez convertir le résultat de mapen une liste:

results = list(map(int, results))
joues
la source
23
Je tiens à souligner que Pylint décourage l'utilisation de map, alors préparez-vous à utiliser les listes de compréhension de toute façon si vous utilisez cette norme. :)
ThorSummoner
6
L'inverse est (pour convertir une liste d'int en liste de chaînes): carte (str, résultats)
Ali ISSA
12
Vous pouvez simplifier cette réponse: utilisez toujours list(map(int, results)), cela fonctionne pour n'importe quelle version de Python.
mvp
378

Utilisez une compréhension de liste :

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

par exemple

>>> results = ["1", "2", "3"]
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
Chris Vig
la source
30
La compréhension des listes est également excellente. Pour l'OP - voir ici pour voir un joli contraste de compréhension des cartes et des listes: stackoverflow.com/questions/1247486/…
cheeken
3

Un peu plus étendu que la compréhension de liste mais également utile:

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)

par exemple

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

Aussi:

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