En Python, il existe deux façons de trier une liste par ordre croissant ou décroissant : la méthode 𝐬𝐨𝐫𝐭() et la fonction intégrée 𝐬𝐨𝐫𝐭𝐞𝐝() . Pour trier une chaîne ( 𝐬𝐭𝐫 ) ou un tuple, utilisez 𝐬𝐨𝐫𝐭𝐞𝐝() .
Pour plus d’informations sur l’inversion ou le mélange aléatoire des éléments, reportez-vous aux articles suivants.
- Inverser une liste, une chaîne, un tuple en Python (reverse, reversed)
- Mélanger une liste, une chaîne, un tuple en Python (random.shuffle, exemple)
Trier une liste à l’aide de la méthode 𝐬𝐨𝐫𝐭()
𝐬𝐨𝐫𝐭() est une méthode pour le type 𝐥𝐢𝐬𝐭 .
𝐬𝐨𝐫𝐭() est un processus destructeur qui trie la liste d’origine sur place.
l = [3, 1, 4, 5, 2] l.sort() print(l) # [1, 2, 3, 4, 5]
Notez que 𝐬𝐨𝐫𝐭() renvoie N𝐨𝐧𝐞 .
print(l.sort()) # None
Par défaut, la liste est triée par ordre croissant. Pour trier par ordre décroissant, définissant l’argument 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 sur T𝐫𝐮𝐞 .
l.sort(reverse=True) print(l) # [5, 4, 3, 2, 1]
Trier une liste à l’aide de la fonction intégrée 𝐬𝐨𝐫𝐭𝐞𝐝()
𝐬𝐨𝐫𝐭𝐞𝐝() est une fonction intégrée.
𝐬𝐨𝐫𝐭𝐞𝐝() renvoie une liste triée, tandis que la liste d’origine reste identique.
l = [3, 1, 4, 5, 2] l_sorted = sorted(l) print(l_sorted) # [1, 2, 3, 4, 5] print(l) # [3, 1, 4, 5, 2]
Comme 𝐬𝐨𝐫𝐭() , la liste est triée par défaut par ordre croissant. Pour trier par ordre décroissant, définissant l’argument 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 sur T𝐫𝐮𝐞 .
l_reverse_sorted = sorted(l, reverse=True) print(l_reverse_sorted) # [5, 4, 3, 2, 1] print(l) # [3, 1, 4, 5, 2]
Trier avec l’argument 𝐤𝐞𝐲 dans 𝐬𝐨𝐫𝐭() et 𝐬𝐨𝐫𝐭𝐞𝐝()
𝐬𝐨𝐫𝐭() et 𝐬𝐨𝐫𝐭𝐞𝐝() prennent en charge l’argument 𝐤𝐞𝐲 , qui accepte un objet appelable (par exemple, une fonction) qui prend un seul argument.
Par exemple, vous pouvez trier par valeur absolue pour les nombres ou par nombre de caractères pour les chaînes. Bien que les exemples suivants utilisent 𝐬𝐨𝐫𝐭𝐞𝐝() , la même approche s’applique à 𝐬𝐨𝐫𝐭() .
l = [-3, 1, 4, -5, 2] print(sorted(l)) # [-5, -3, 1, 2, 4] print(sorted(l, key=abs)) # [1, 2, -3, 4, -5]
l = ['b', 'cc', 'aaa'] print(sorted(l)) # ['aaa', 'b', 'cc'] print(sorted(l, key=len)) # ['b', 'cc', 'aaa']
Pour en savoir plus sur 𝐤𝐞𝐲 , reportez-vous à l’article suivant.
Vous pouvez trouver des exemples utilisant 𝐤𝐞𝐲 dans les articles suivants.
- Comment utiliser l’argument clé en Python (trié, max, etc.)
- Trier une liste de dictionnaires par la valeur de la clé spécifique en Python
- Essayez une liste 2D en Python
- Trier une liste de chaînes numériques en Python
Comment trier une chaîne et un tuple
Étant donné que les chaînes et les tuples sont immuables, ils ne disposent pas d’une méthode 𝐬𝐨𝐫𝐭() qui peut modifier l’objet d’origine en place.
Cependant, 𝐬𝐨𝐫𝐭𝐞𝐝() accepte tous les objets itérables, y comprend les listes, les chaînes et les tuples, et renvoie une nouvelle liste triée.
Trèves les chaînes
Lorsqu’une chaîne est transmise à 𝐬𝐨𝐫𝐭𝐞𝐝() , elle renvoie une liste de caractères triés.
s = 'cebad' l_sorted = sorted(s) print(l_sorted) # ['a', 'b', 'c', 'd', 'e'] print(s) # cebad
Utilisez la méthode 𝐣𝐨𝐢𝐧() pour concaténer une liste de caractères en une seule chaîne.
s_sorted = ''.join(l_sorted) print(s_sorted) # abcde
Vous pouvez tout écrire en une seule fois. Pour trier par ordre décroissant, définissant l’argument 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 sur T𝐫𝐮𝐞 .
s_sorted = ''.join(sorted(s)) print(s_sorted) # abcde s_reverse_sorted = ''.join(sorted(s, reverse=True)) print(s_reverse_sorted) # edcba
Les exemples ci-dessus concernent le tri de la chaîne elle-même. Si vous avez affaire à une liste de chaînes, vous pouvez utiliser à la fois 𝐬𝐨𝐫𝐭() et 𝐬𝐨𝐫𝐭𝐞𝐝() .
l = ['banana', 'cherry', 'apple'] print(sorted(l)) # ['apple', 'banana', 'cherry'] l.sort() print(l) # ['apple', 'banana', 'cherry']
L’ordre des caractères est déterminé par les points de code Unicode des caractères.
Trier les tuples
Le tri des tuples suit la même approche qu’avec les chaînes. 𝐬𝐨𝐫𝐭𝐞𝐝() renvoie une liste triée lorsqu’un tuple est passé.
t = (3, 1, 4, 5, 2) l_sorted = sorted(t) print(l_sorted) # [1, 2, 3, 4, 5] print(t) # (3, 1, 4, 5, 2)
Utilisez 𝐭𝐮𝐩𝐥𝐞() pour convertir une liste en tuple.
t_sorted = tuple(l_sorted) print(t_sorted) # (1, 2, 3, 4, 5)
Vous pouvez tout écrire en une seule fois. Pour trier par ordre décroissant, définissant l’argument 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 sur T𝐫𝐮𝐞 .
t_sorted = tuple(sorted(t)) print(t_sorted) # (1, 2, 3, 4, 5) t_reverse_sorted = tuple(sorted(t, reverse=True)) print(t_reverse_sorted) # (5, 4, 3, 2, 1)
