Maison >développement back-end >Tutoriel Python >Comment trier une liste de chaînes numériques en Python ?
Tri d'une liste de chaînes numériques
La fonction sort() de Python peut prêter à confusion lorsqu'il s'agit de chaînes représentant des nombres. Cet article explique pourquoi et présente des solutions pour trier ces listes numériquement.
Le problème :
Considérez l'extrait de code ci-dessous :
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort() print(list1)
Ceci le code tente de convertir chaque chaîne de la liste en un entier, puis de trier la liste. Cependant, le résultat est incorrect :
['1', '10', '2', '200', '22', '23', '3', '4']
La solution :
Le problème dans le code donné est que même si chaque chaîne est convertie en un entier dans la boucle , la boucle ne met pas à jour la liste d'origine. Pour résoudre ce problème, convertissez les chaînes en entiers et créez une nouvelle liste :
list1 = [int(x) for x in list1] list1.sort()
Utilisation d'une fonction clé :
Si vous devez conserver les chaînes au lieu de en les convertissant en entiers, vous pouvez utiliser le paramètre key dans la fonction sort() :
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
ou dans un seul line:
list1 = sorted([int(x) for x in list1])
Dans les deux cas, la fonction int() est appelée comme clé sur chaque chaîne avant de la comparer, permettant de trier numériquement la liste.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!