HOWTO · Python
Convertir une liste de chaînes de caractères en entier en Python
Ce tutoriel montre comment convertir des listes de chaînes de caractères en nombres entiers en Python
Sur cette page
Convertissez des chaînes numériques avec int() pour obtenir une liste d’entiers. Une compréhension de liste est un choix concis par défaut ; map() et une boucle for sont des solutions de remplacement utiles. Pour les tableaux, NumPy peut convertir les valeurs si cette bibliothèque fait déjà partie de votre projet. Les exemples ci-dessous utilisent les mêmes données d’entrée. Les résultats d’exécution fournis montrent que la conversion produit [12, 7, 50, 92].
Convertir une liste de chaînes en entiers
Chaque chaîne doit représenter un entier accepté par int(), comme "12" ou "-4". La conversion crée des valeurs entières que vous pouvez utiliser dans des calculs sans avoir à analyser les chaînes à répétition. Choisissez une compréhension de liste pour une transformation directe, map() pour appliquer une fonction à chaque élément d’un itérable, ou une boucle si chaque élément nécessite un traitement supplémentaire.
Utiliser une compréhension de liste
Une compréhension de liste exprime la conversion et la création de la liste en une seule expression lisible. Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["12", "7", "50", "92"]
integers = [int(value) for value in values]
print(integers)
[12, 7, 50, 92]
Cela crée une nouvelle liste sans modifier values. list comprehension est une construction du langage Python, et non une méthode. C’est un bon choix par défaut lorsque chaque élément doit être converti et que la transformation est simple.
Utiliser map()
map() applique int() à chaque élément. En Python 3, cette fonction renvoie un itérateur. Enveloppez-le dans list() si vous avez besoin d’obtenir une liste ou de l’afficher sous cette forme :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["12", "7", "50", "92"]
integers = list(map(int, values))
print(integers)
[12, 7, 50, 92]
Cette méthode convertit les valeurs comme l’exemple précédent. Un itérateur peut être utile pour traiter les valeurs une par une, mais il est consommé au fil du parcours ; matérialisez-le si vous avez besoin d’une liste réutilisable. Pour une conversion classique, la fonction et la compréhension de liste sont toutes deux des options claires.
Utiliser une boucle for
Une boucle rend chaque étape explicite et convient lorsque la conversion nécessite un traitement par élément, par exemple pour noter quelle valeur source a échoué. Ajoutez chaque valeur convertie à une liste de résultats :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["12", "7", "50", "92"]
integers = []
for value in values:
integers.append(int(value))
print(integers)
[12, 7, 50, 92]
Choisissez cette forme lorsqu’une compréhension sur une seule ligne masquerait un traitement important. Pour une conversion directe, la compréhension est plus courte.
Convertir des chaînes avec NumPy
Si votre projet utilise déjà NumPy et que vous avez besoin d’un tableau pour des calculs numériques, convertissez les chaînes en indiquant un type entier. Cet exemple complet importe NumPy, définit les données d’entrée et affiche le tableau obtenu ; NumPy doit être installé dans l’environnement où vous exécutez le code :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
try:
import numpy as np
except ImportError:
print("Install NumPy to run this example.")
else:
values = ["12", "7", "50", "92"]
integers = np.array(values, dtype=int)
print(integers)
Le résultat est un tableau d’entiers NumPy, et non une liste Python. Utilisez cette méthode si le reste de votre travail nécessite les opérations sur les tableaux de NumPy. Les performances et l’utilisation de la mémoire dépendent de la taille des données et de la charge de travail ; mesurez votre propre cas avant de comparer les vitesses.
Gérer les valeurs qui ne peuvent pas être converties
Une chaîne telle que "seven" ne représente pas un entier ; int() déclenche donc ValueError. Si l’entrée peut contenir de telles valeurs, interceptez l’exception pour chaque conversion et décidez s’il faut ignorer la valeur, la signaler ou arrêter le traitement. Par exemple, cette version rassemble les entiers valides et consigne les chaînes rejetées :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["12", "seven", "50"]
integers = []
rejected = []
for value in values:
try:
integers.append(int(value))
except ValueError:
rejected.append(value)
print(integers)
print(rejected)
[12, 50]
['seven']
Interceptez uniquement l’erreur de conversion attendue ; intercepter ValueError permet de laisser visibles les autres erreurs de programmation. Si toutes les valeurs doivent être valides, il peut être préférable de laisser l’exception se propager afin que les données incorrectes soient signalées. Validez ou signalez les valeurs rejetées à l’étape qui convient le mieux à votre application.
Convertir des chaînes décimales et des valeurs mixtes
int() accepte les chaînes représentant des entiers, mais pas la notation décimale comme "3.8". Si la règle souhaitée consiste à tronquer la partie fractionnaire, convertissez d’abord avec float(), puis avec int() :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
values = ["3.8", "-2.4"]
integers = [int(float(value)) for value in values]
print(integers)
[3, -2]
La conversion en int tronque vers zéro ; elle n’arrondit pas à l’entier le plus proche. Si la tâche exige un arrondi, choisissez et appliquez plutôt une règle explicite. Tenez également compte des limites de précision lorsque vous convertissez de très longues chaînes décimales en nombres à virgule flottante.
Si une liste contient déjà des entiers ainsi que des chaînes numériques, ne convertissez que les valeurs qui sont des chaînes :
values = [12, "7", 50]
integers = [int(value) if isinstance(value, str) else value for value in values]
print(integers)
[12, 7, 50]
Ainsi, les entiers existants restent des entiers et les chaînes sont analysées. Ce test ne garantit pas que des objets quelconques ou des chaînes mal formées peuvent être traités sans risque : validez les données réelles et gérez ValueError si des valeurs non fiables sont possibles. Si la liste ne contient déjà que des entiers, aucune conversion n’est nécessaire.