Tri des chaînes avec des nombres intégrés
Lorsque vous traitez des chaînes contenant des nombres, les trier par ordre alphabétique peut ne pas donner les résultats souhaités. Pour trier correctement ces chaînes, vous devez prendre en compte à la fois les composants textuels et numériques.
Tri humain (tri naturel)
Tri naturel, également connu sous le nom de tri humain, est une technique utilisée pour trier les objets d'une manière cohérente avec la façon dont les humains les perçoivent. Cette approche consiste à extraire les nombres des chaînes, puis à les trier en fonction de leurs valeurs numériques.
En Python, vous pouvez implémenter un tri naturel à l'aide de la clé de tri personnalisée suivante :
def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Ceci La fonction divise la chaîne en caractères et en nombres, puis convertit les caractères numériques en nombres entiers. La liste triée est obtenue en appelant la fonction sort() avec cette clé personnalisée :
alist = ["something1", "something12", "something17", "something2", "something25", "something29"] alist.sort(key=natural_keys) print(alist)
Le résultat serait :
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Tri des chaînes avec des flottants
Si vos chaînes contiennent des nombres à virgule flottante, vous pouvez modifier la clé de tri naturelle pour l'extraire et la convertir en flottants en utilisant ce qui suit regex :
def natural_keys(text): return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Cette clé modifiée vous permet également de trier les chaînes avec des nombres à virgule flottante :
alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"] alist.sort(key=natural_keys) print(alist)
Le résultat serait :
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
En utilisant des techniques de tri humaines, vous pouvez trier efficacement les chaînes contenant des nombres incorporés d'une manière qui correspond à l'intuition humaine.
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!