Maison >développement back-end >Tutoriel Python >Comment trier numériquement une liste de numéros de chaîne en Python ?

Comment trier numériquement une liste de numéros de chaîne en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 17:57:12642parcourir

How to Sort a List of String Numbers Numerically in Python?

Tri numérique d'une liste de numéros de chaîne

Malgré sa simplicité, la fonction Python sort() peut être trompeuse lorsqu'il s'agit de chaînes représentant des nombres . Comme le démontre l'extrait de code ci-dessous, tenter de convertir ces chaînes en nombres entiers, puis de les trier produit des résultats incorrects :

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
for item in list1:
    item = int(item)

list1.sort()
print(list1)

Sortie :

['1', '10', '2', '200', '22', '23', '3', '4']

Pour corriger ce problème, vous devez convertissez réellement vos chaînes en entiers. Voici le code corrigé :

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
list1 = [int(x) for x in list1]
list1.sort()

Cela génère l'ordre numérique correct :

['1', '2', '3', '4', '10', '22', '23', '200']

Alternativement, si vous devez conserver les éléments sous forme de chaînes, vous pouvez utiliser le paramètre key dans le tri (). Ce paramètre accepte une fonction appelée sur chaque élément avant sa comparaison. La valeur de retour de la fonction clé est utilisée à des fins de comparaison au lieu de l'élément lui-même.

Par exemple :

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
list1.sort(key=int)

ou

list1 = sorted([int(x) for x in list1])

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn