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
Libérer: 2024-12-08 17:57:12
original
656 Les gens l'ont consulté

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)
Copier après la connexion

Sortie :

['1', '10', '2', '200', '22', '23', '3', '4']
Copier après la connexion

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()
Copier après la connexion

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

['1', '2', '3', '4', '10', '22', '23', '200']
Copier après la connexion

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)
Copier après la connexion

ou

list1 = sorted([int(x) for x in list1])
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal