Tri des chaînes avec des nombres intégrés
Le tri des listes de chaînes contenant des nombres peut poser un défi en raison des différents types de données. L'approche suivante fournit une solution pour trier correctement ces chaînes.
Pour prétraiter les chaînes, nous définissons une fonction d'assistance, atoi(), qui convertit une chaîne en entier si elle représente un nombre ; sinon, il renvoie la chaîne d'origine. Cela facilite l'extraction de composants numériques à partir de chaînes.
Ensuite, nous introduisons la fonction natural_keys(), qui divise les chaînes à l'aide d'expressions régulières et applique la fonction atoi() à chaque composant. Cela transforme la liste en une forme triable.
En utilisant la méthode sort(), nous appliquons la fonction natural_keys() comme argument clé. Cela trie la liste dans l'ordre humain, en tenant compte à la fois des composants alphabétiques et numériques.
Exemple :
Considérez la liste de chaînes suivante :
["something1", "something12", "something17", "something2", "something25", "something29"]
Tri de cette liste avec la fonction natural_keys() produit :
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Tri du texte avec des flottants :
Pour étendre la fonctionnalité afin d'inclure des flottants, le modèle d'expression régulière dans natural_keys() peut être modifié pour correspondre au flottant -numéros de points.
return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]
où atof() est une fonction d'assistance qui tente de convertir la chaîne en un float.
Cela permet de trier les chaînes contenant à la fois des composants alphabétiques et à virgule flottante.
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!