


Comment puis-je implémenter le tri naturel pour les chaînes contenant des nombres et des flottants en Python ?
Dec 02, 2024 am 08:54 AMTri naturel des chaînes avec des nombres
Lors du tri de chaînes contenant des nombres, les méthodes de tri par défaut peuvent ne pas donner le résultat souhaité. Par exemple, la chaîne "quelque chose12" peut être placée après "quelque chose2" au lieu d'être avant.
Pour remédier à cela, nous pouvons utiliser le tri naturel, qui prend en compte les nombres contenus dans les chaînes. Voici comment procéder :
Importation des modules nécessaires :
Tout d'abord, nous importons le module re pour la gestion des expressions régulières.
import re
Définition Fonctions d'assistance :
Nous définissons des fonctions d'assistance pour convertir des chaînes en entiers et flottants :
def atoi(text): return int(text) if text.isdigit() else text def atof(text): try: retval = float(text) except ValueError: retval = text return retval
Définition de la fonction de tri naturel :
La fonction natural_keys divise la chaîne en ses parties constitutives à l'aide d'expressions régulières :
def natural_keys(text): return [atoi(c) for c in re.split(r'(\d+)', text)]
Tri avec des clés naturelles :
Utilisation des natural_keys fonctionne comme une clé de tri et place les chaînes dans l'ordre naturel :
alist = ["something1", "something12", "something17", "something2", "something25", "something29"] alist.sort(key=natural_keys) print(alist)
Sortie :
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Gestion des flotteurs :
Pour triez les chaînes contenant des flottants, modifiez l'expression régulière dans natural_keys pour qu'elle corresponde aux flottants :
def natural_keys(text): return [atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser la belle soupe pour analyser HTML?

Comment télécharger des fichiers dans Python

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Comment travailler avec des documents PDF à l'aide de Python

Comment se cacher en utilisant Redis dans les applications Django

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch?

Présentation de la boîte à outils en langage naturel (NLTK)
