Comment trier des listes en Python
Publié: 2022-03-30Cet article vous apprendra comment trier une liste en Python.
En Python, vous pouvez utiliser la méthode sort() pour trier une liste sur place. Ou vous pouvez utiliser la fonction intégrée triée() pour obtenir une copie triée de la liste.
Dans ce didacticiel, vous apprendrez :
- Syntaxe de la méthode
sort()
et de la fonctionsorted()
- Exemples de code de listes de tri par ordre croissant et décroissant
- Personnaliser le tri à l'aide du paramètre
key
- Différence entre
sort()
etsorted()
Commençons!
Syntaxe de la méthode Python sort()
La méthode sort()
agit sur une liste Python. Et il trie la liste sur place et modifie la liste d'origine.
La syntaxe de la méthode sort()
de Python est :
<list>.sort(reverse = True | False, key = <func>)
Analysons maintenant la syntaxe ci-dessus.
-
<list>
est n'importe quel objet de liste Python valide. -
reverse
est un paramètre facultatif qui prend True ou False. - La valeur par défaut de
reverse
estFalse
et la liste est triée par ordre croissant. DonnezTrue
pour trier la liste par ordre décroissant. -
key
est également un paramètre facultatif défini sur<func>
. -
<func>
peut être une fonction intégrée ou une fonction définie par l'utilisateur.
Dans la section suivante, vous commencerez à coder des exemples simples.
Comment trier la liste Python dans l'ordre croissant
Considérez les nums
de liste. Pour trier la liste par ordre croissant, vous pouvez appeler la méthode sort()
sur la liste.
Exécutez l'extrait de code suivant.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
Les nums
la liste ont été triés par ordre croissant et la liste d'origine a été modifiée. C'est ce qu'on appelle le tri sur place .
Comment trier la liste Python par ordre décroissant
Pour trier la liste par ordre décroissant, définissez reverse
sur True
, comme indiqué ci-dessous.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
Vous pouvez voir que la liste est maintenant triée par ordre décroissant.
Comment utiliser la clé avec la méthode Python sort()
Dans cette section, utilisons le paramètre key
et personnalisons le tri.
Ici, mod5()
est une fonction qui prend un nombre x
et renvoie le reste lorsque le nombre x
est divisé par 5.
def mod5(x): return x % 5
Et nous aimerions utiliser la fonction ci-dessus comme key
.
Maintenant, exécutez la cellule de code suivante.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
Prenez une minute pour analyser la sortie.
Remarquez qu'au lieu du tri habituel, vous personnalisez maintenant votre tri en fonction de la key
qui est mod5
.
- Le nombre qui laisse le reste minimum lorsqu'il est divisé par 5 vient en premier maintenant.
- Et le nombre qui laisse le plus grand reste lorsqu'il est divisé par 5 est le dernier élément de la liste triée.
Pour vérifier que c'est le cas, exécutez l'extrait de code suivant.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 divise 25 exactement, et le reste est 0. C'est donc le premier élément de la liste triée. 6 laisse un reste 1, c'est donc le deuxième élément, et ainsi de suite. 9 laisse le reste 4 lorsqu'il est divisé par 5, et c'est le dernier élément de la liste triée.
Au lieu de définir une fonction distincte, vous pouvez tout aussi bien utiliser des fonctions lambda. En Python, les lambdas sont des fonctions anonymes sur une ligne. lambda args : expression renvoie l' expression calculée sur les args .
Maintenant, réécrivons le tri ci-dessus en utilisant l'expression lambda, comme indiqué ci-dessous.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
Jusqu'à présent, vous avez appris à trier une liste de nombres. Voyons ensuite comment vous pouvez trier une liste de chaînes en Python.
Comment trier la liste Python par ordre alphabétique
Dans cette section, vous apprendrez à trier une liste de chaînes, avec des exemples inspirés de Harry Potter.

Dans notre exemple, students
sont une liste d'étudiants à Poudlard. Et nous aimerions les trier dans l'ordre alphabétique de leurs noms.
Lors du tri d'une liste de chaînes, le tri par défaut est par ordre alphabétique.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Imprimons la liste triée pour vérifier le résultat du tri.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Comment trier la liste Python dans l'ordre alphabétique inverse
Afin de trier la liste dans l'ordre alphabétique inverse, définissez reverse
= True
, comme indiqué dans l'extrait de code ci-dessous.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
À partir de la sortie, vous pouvez voir que la liste a bien été triée dans l'ordre inverse.
Comment utiliser la clé Paramètre Personnaliser Trier
Dans cette section, personnalisons le tri à l'aide du paramètre key
facultatif.
Considérez la liste suivante, houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
Ici, houses
est une liste de dictionnaires. Chaque dictionnaire contient deux paires clé-valeur, l'une indiquant les noms des élèves et l'autre la maison à laquelle ils appartiennent.
Maintenant, nous aimerions trier cette liste de maisons dans l' ordre alphabétique des maisons auxquelles elles appartiennent.
Comme vous l'avez peut-être déjà deviné, nous devrions définir le paramètre key
sur la maison des étudiants particuliers.

Afin de récupérer la maison de chaque étudiant, vous pouvez définir une fonction returnHouse()
, comme indiqué ci-dessous.
def returnHouse(student): return student['house']
Cette fonction renvoie la maison à laquelle appartient l'étudiant particulier.
Maintenant, vous pouvez appeler la méthode sort()
sur la liste des maisons, comme indiqué.
houses.sort(key=returnHouse)
Dans la sortie ci-dessous, notez comment la liste est triée par maison et non par nom d'étudiant. C'est pourquoi nous avons Gryffondor, Poufsouffle et Serpentard, par ordre alphabétique.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Pour définir le paramètre key
en conséquence, vous pouvez également utiliser une fonction lambda. Pour chaque élément de liste, cette fonction renvoie la maison de cet élément de liste.
Exécutez la cellule de code suivante pour vérifier cela.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Dans tous les exemples jusqu'à présent, vous avez utilisé la méthode sort()
sur une liste. Et vous savez maintenant qu'il modifie la liste originale.
Que se passe-t-il si vous souhaitez conserver la liste d'origine telle quelle mais obtenir une copie triée de la liste ?
Eh bien, en Python, vous pouvez utiliser la fonction sorted()
pour le faire.
Syntaxe de la fonction Python triée()
La fonction sorted()
prend une liste ou n'importe quelle collection comme argument. Et il renvoie une copie triée de la liste et la liste d'origine n'est pas modifiée.
La syntaxe de la fonction sorted()
de Python est :
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Remarquez à quel point la syntaxe est très similaire à la méthode sort()
que nous avons vue précédemment.
-
<list>
est n'importe quel objet de liste Python valide et est un paramètre obligatoire . -
reverse
etkey
sont des paramètres facultatifs
Note : Contrairement à la méthode
sort()
qui n'agit que sur les listes, la fonctionsorted()
peut être utilisée pour trier n'importe quel itérable Python, comme les listes, les chaînes et les dictionnaires.
Comment trier la liste Python à l'aide de la fonction sorted ()
#1. Dans cet exemple, nums
est une liste de nombres.
Vous pouvez appeler la fonction sorted sorted()
avec nums
comme argument. Et assignez-le à la liste sorted_nums1
.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
Dans la sortie ci-dessus, vous pouvez voir que nums
ont été triés par ordre croissant par défaut.
Notez également que les nums
la liste d'origine ne sont pas modifiés, car sorted()
renvoie une nouvelle liste. Ceci est vérifié ci-dessous.
print(nums) # Output: [25, 13, 6, 17, 9]
#2 . Maintenant, définissez le paramètre facultatif reverse
sur True
et obtenez sorted_nums2
.
Comme indiqué dans la cellule de code ci-dessous, sorted_nums2
est une nouvelle liste avec les éléments triés dans l'ordre décroissant.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. Dans cet exemple, travaillons avec une liste de chaînes.
Comme dans les exemples précédents, l'appel de la fonction sorted()
renvoie une nouvelle liste. Et les éléments sont triés par ordre alphabétique.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Maintenant, personnalisons le tri à l'aide du paramètre key
facultatif. Définissez la key
sur len
. Cela triera la liste en fonction de la longueur des chaînes.
Remarque : en Python, la fonction intégrée
len()
accepte n'importe quel itérable, tel que des listes, des chaînes, des tuples, etc. Et il renvoie la longueur de l'itérable.
La chaîne avec la longueur la plus courte apparaît en premier dans la liste triée et la chaîne la plus longue apparaît à la fin de la liste triée.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
Dans la sortie ci-dessus, la poire est la chaîne la plus courte et la fraise est la chaîne la plus longue.
Méthode Python sort() et fonction triée()
Jusqu'à présent, vous avez appris à utiliser la méthode sort()
ainsi que la fonction sorted()
. Dans cette section, énumérons les différences entre ces deux méthodes.
Méthode Python .sort() | Fonction Python triée() |
Trie la liste sur place—modifie la liste d'origine | Renvoie une nouvelle liste triée |
Fonctionne uniquement avec les listes Python | Fonctionne avec les itérables Python tels que les listes, les chaînes et d'autres collections |
A le type de retour None | Renvoie une copie triée de l'itérable |
Résumé
J'espère que vous avez trouvé ce tutoriel sur les listes Python utile.
Résumons rapidement ce que nous avons couvert.
- Utilisez list.sort(reverse = True | False, key = <func>) avec les paramètres facultatifs reverse et key pour trier une liste sur place.
- Utilisez sorted(list, reverse = True | False, key = <func>) pour obtenir une copie triée de la liste.
Maintenant que vous avez appris à trier les listes Python, découvrez la compréhension des listes en Python. Ou vous pouvez également apprendre à gérer des fichiers ou à travailler avec des fichiers JSON en Python.
Vous pouvez essayer les exemples donnés ci-dessus dans le compilateur Python en ligne Geekflare.