Cet article vous apprendra comment trier une liste en Python.

En Python, vous pouvez utiliser le sorte() méthode pour trier une liste en place. Ou vous pouvez utiliser le trié () fonction pour obtenir une copie triée de la liste.

Dans ce didacticiel, vous apprendrez :

  • Syntaxe de la sort() méthode et sorted() fonction
  • Exemples de code de listes de tri par ordre croissant et décroissant
  • Personnalisez le tri à l'aide de key paramètre
  • Différence entre sort() vs sorted()

Commençons !👩🏽‍💻

Syntax of Python sort() Method

Les sort() La méthode agit sur une liste Python. Et il trie la liste sur place et modifie la liste d'origine.

La syntaxe de Python sort() méthode 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 optionnel paramètre qui prend True ou False.
  • La valeur par défaut de reverse is False, et la liste est triée par ordre croissant. Donner True pour trier la liste par ordre décroissant.
  • key est aussi un optionnel paramètre 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.

How to Sort Python List in Ascending Order

Considérez la liste nums. Pour trier la liste par ordre croissant, vous pouvez appeler le sort() méthode 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]

La liste nums a été trié par ordre croissant et la liste d'origine a été modifiée. C'est appelé tri sur place.

How to Sort Python List in Descending Order

Pour trier la liste par ordre décroissant, définissez reverse à 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.

How to Use key with Python sort() Method

Dans cette section, utilisons le key paramètre et personnaliser le tri.

Ici, mod5() est une fonction qui accepte 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 du key lequel 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 fonctions lambda. En Python, les lambdas sont des fonctions anonymes sur une ligne. arguments lambda : expression renvoie le expression calculé sur le 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.

How to Sort Python List in Alphabetical Order

Dans cette section, vous apprendrez à trier une liste de chaînes, avec des exemples inspirés de Harry Potter. ✨

liste de tri python

Dans notre exemple, students est 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']

How to Sort Python List in Reverse Alphabetical Order

Pour trier la liste par ordre alphabétique inverse, réglez 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.

How to Use key Parameter Customize Sort

Dans cette section, personnalisons le tri à l'aide de l'option key paramètre.

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 maisons à l' ordre alphabétique des maisons ils appartiennent à.

Comme vous l'avez peut-être déjà deviné, nous devrions définir le key paramètre à la maison des étudiants particuliers.

Afin de récupérer la maison de chaque élève, 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 le sort() méthode 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 key paramètre 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é le sort() méthode 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 le sorted() fonction pour le faire.

Syntax of Python sorted() Function

Les sorted() La fonction 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 Python sorted() la fonction est:

<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

Remarquez comment la syntaxe est très similaire à la sort() méthode que nous avons vue précédemment.

  • <list> est n'importe quel objet de liste Python valide et est un conditions paramètre.
  • reverse et un key êtes optionnel paramètres

Notes: Contrairement à la sort() méthode qui agit uniquement sur les listes, sorted() La fonction peut être utilisée pour trier n'importe quel itérable Python, tel que des listes, des chaînes et des dictionnaires.

How to Sort Python List Using sorted() Function

# 1. Dans cet exemple, nums est une liste de nombres.

Vous pouvez appeler le sorted() fonctionner avec nums comme argument. Et l'attribuer à 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 a été trié par ordre croissant par défaut.

Notez également que la liste originale nums n'est pas modifié, 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 à True et obtenir sorted_nums2.

Comme indiqué dans la cellule de code ci-dessous, sorted_nums2 est une nouvelle liste avec les éléments triés par 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, appeler le sorted() La fonction 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 de l'option key paramètre. Met le key à len. Cela triera la liste en fonction de la longueur des chaînes.

Remarque : En Python, la fonction intégrée len() La fonction 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, Poire est la chaîne la plus courte, et fraise est la chaîne la plus longue. 

Python sort() Method vs. sorted() Function

Jusqu'à présent, vous avez appris à utiliser le sort() ainsi que la méthode sorted() une fonction. Dans cette section, énumérons les différences entre ces deux méthodes.

Méthode Python .sort()Python trié () Fonction
Trie la liste sur place—modifie la liste d'origineRenvoie une nouvelle liste triée
Fonctionne uniquement avec les listes PythonFonctionne avec les itérables Python tels que les listes, les chaînes et d'autres collections
A le type de retour de NoneRenvoie une copie triée de l'itérable

En 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(inverse = Vrai | Faux, clé = ) avec l'option inverser et un key paramètres pour trier une liste en place.
  • Utilisez trié(liste, inverse = Vrai | Faux, clé = ) pour obtenir une copie triée de la liste.

Maintenant que vous avez appris à trier les listes Python, découvrez liste de compréhension en Python. Ou vous pourriez aussi bien apprendre comment gérer les fichiers or travailler avec des fichiers JSON en Python.

Vous pouvez essayer les exemples donnés ci-dessus dans le Compilateur Python en ligne Geekflare.