L'équivalent de Python au natsort de PHP pour le tri par ordre naturel
Une question fréquemment posée en Python est de savoir comment trier une liste dans l'ordre naturel, similaire à la fonction natsort de PHP. Contrairement à un tri standard, l'ordre naturel considère les caractères numériques comme des nombres plutôt que comme des chaînes.
Par exemple, envisagez de trier une liste de noms de fichiers :
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort()</code>
Ce tri standard entraînera :
['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
Cependant, pour obtenir un tri par ordre naturel, Python fournit une fonction clé qui convertit les chaînes en tuples numériques si possible. Cela permet des comparaisons numériques appropriées.
Voici un exemple d'implémentation :
<code class="python">import re def natsort_key(s): return map(int, re.findall(r'(\d+)', s))</code>
L'application de cette clé pendant le tri donne l'ordre naturel souhaité :
<code class="python">l.sort(key=natsort_key)</code>
La sortie sera be :
['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']
Alternativement, si vous avez besoin d'un tri insensible à la casse, une implémentation plus complète peut être utilisé :
<code class="python">def natcasecmp(a, b): return natcmp(a.lower(), b.lower())</code>
Ceci fournit un tri par ordre naturel insensible à la casse.
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!