Tri numérique des numéros de chaîne
Lorsque vous traitez une liste de chaînes qui représentent des valeurs numériques, les trier en fonction de leur valeur réelle peut sembler une tâche simple. Cependant, la fonction sort() par défaut en Python peut fournir des résultats inattendus.
Le problème survient parce que la fonction sort() compare les chaînes lexicographiquement, ce qui signifie qu'elle les trie par ordre alphabétique plutôt que numérique. Pour résoudre ce problème, il est crucial de convertir les chaînes en entiers réels avant d'effectuer le tri.
Considérez le code Python suivant :
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort()
Dans ce code, nous convertissons d'abord chaque chaîne du list en un entier en utilisant la fonction int(). Cependant, nous négligeons alors d’utiliser les valeurs entières converties dans le tri. En conséquence, la fonction compare les chaînes d'origine et produit le résultat suivant :
['1', '10', '2', '200', '22', '23', '3', '4']
Pour trier la liste numériquement, nous devons incorporer les entiers convertis dans le tri, comme indiqué ci-dessous :
list1 = [int(x) for x in list1] list1.sort()
Cette fois, la fonction comparera correctement les valeurs entières et produira le résultat souhaité :
['1', '2', '3', '4', '10', '22', '23', '200']
Alternativement, si vous Si vous devez conserver les chaînes au lieu de les convertir en entiers, vous pouvez utiliser une fonction clé lors du tri. La fonction sort() vous permet de spécifier une fonction clé qui est appliquée à chaque élément avant sa comparaison. Cela vous permet de personnaliser les critères de comparaison.
Par exemple, pour trier numériquement la liste des chaînes à l'aide d'une fonction clé, vous pouvez utiliser le code suivant :
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
Dans ce cas, la fonction clé int() est appliquée à chaque chaîne avant comparaison. La fonction convertit les chaînes en entiers et la fonction sort() compare les valeurs entières résultantes, produisant le même résultat souhaité :
['1', '2', '3', '4', '10', '22', '23', '200']
En comprenant comment la fonction sort() fonctionne en Python et en utilisant les fonctions clés si nécessaire, vous pouvez trier efficacement les listes de numéros de chaîne numériquement, quel que soit leur format d'origine.
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!