sort() vs sorted()
list.sort() trie la liste en place et renvoie None ; sorted() renvoie une nouvelle liste triée depuis toute collection, sans modifier l’original.
Comparaison point par point
#Ce qu’elle renvoie
- list.sort()
None- sorted()
- Une nouvelle liste triée
Modifie l’original
- list.sort()
- Oui, en place
- sorted()
- Non
Fonctionne sur
- list.sort()
- Seulement sur une liste
- sorted()
- N’importe quel objet itérable
Paramètres key et reverse
- list.sort()
- Oui
- sorted()
- Oui
Stabilité du tri
- list.sort()
- Oui
- sorted()
- Oui
Usage typique
- list.sort()
- Liste dont l’ordre d’origine n’est plus nécessaire
- sorted()
- Tuple, ensemble, chaîne, ou quand l’original doit rester
Exemple
#scores = [72, 95, 64, 88]
scores.sort()
print(scores)
names = ("Emma", "léa", "Lucas")
print(sorted(names, key=str.lower))
print(names)Définition et utilisation
#Les deux servent à trier et acceptent les mêmes paramètres : key avec une fonction qui calcule la clé, et reverse=True pour l’ordre décroissant. Le tri est stable dans les deux cas : les éléments de clés égales conservent leur ordre relatif.
Elles diffèrent par ce qui arrive aux données. La méthode sort() modifie la liste en place et renvoie None, donc l’écriture my_list = my_list.sort() remplacerait la liste par None. Elle ne fonctionne que sur les listes. La fonction sorted() crée une nouvelle liste et la renvoie, sans toucher à l’original, et elle accepte n’importe quel objet itérable : liste, tuple, ensemble ou chaîne.
Quand l’ordre d’origine n’est plus nécessaire et que vous triez une liste, sort() est un peu plus rapide, car elle ne crée pas de nouvelle liste. Quand vous voulez garder l’original, que vous triez autre chose qu’une liste, ou que vous avez besoin du résultat dans la même expression, par exemple dans une boucle for ou un argument de fonction, utilisez sorted().
Syntaxe
#list.sort(key=None, reverse=False)
sorted(iterable, key=None, reverse=False)Plus d’exemples
#tasks = ["c", "a", "b"]
tasks = tasks.sort()
print(tasks)word = "python"
print(sorted(word))
print(sorted(word, reverse=True))Bonnes pratiques
#- Si vous voulez trier une liste sans modifier l’original, utilisez
sorted(my_list), plutôt que de copier la liste puis d’utilisersort(). - Pour trier selon plusieurs critères, donnez un tuple dans
key, par ex.key=lambda s: (-s["points"], s["name"]). - Les lettres accentuées se trient par défaut après "z". Pour un tri correct, utilisez le module
localeou la bibliothèquePyICU.
Entrées associées
#Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.