Cet article vous apprendra à trier une liste en Python.

En Python, vous pouvez utiliser la méthode sort() pour trier une liste à la place. Ou vous pouvez utiliser la fonction intégrée sorted() pour obtenir une copie triée de la liste.

Dans ce tutoriel, vous apprendrez :

  • La syntaxe de la méthode sort() et de la fonction sorted()
  • Des exemples de code pour trier des listes dans l’ordre croissant et décroissant
  • Personnaliser le tri à l’aide du paramètre key
  • Différence entre sort() et sorted()

Commençons ! 👩🏽‍💻

Syntaxe de la méthode Python sort()

La méthode sort( ) agit sur une liste Python. Elle trie la liste sur place et modifie la liste d’origine.

La syntaxe de la méthode sort() de Python est la suivante :

.sort(reverse = True | False, key = )

Analysons maintenant la syntaxe ci-dessus.

  • est un objet liste valide en Python.
  • reverse est un paramètre optionnel qui prend la valeur True ou False.
  • La valeur par défaut de reverse est False, et la liste est triée par ordre croissant. Donnez True pour trier la liste dans l’ordre décroissant.
  • key est également un paramètre facultatif qui prend la valeur .
  • 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 une liste Python par ordre croissant ?

Considérons la liste nums. 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)

# Sortie : [6, 9, 13, 17, 25]

La liste nums a été triée par ordre croissant et la liste d’origine a été modifiée. C’est ce qu’on appelle le tri sur place.

Comment trier une liste Python par ordre décroissant ?

Pour trier la liste dans l’ordre décroissant, attribuez la valeur True à l’option reverse, comme indiqué ci-dessous.

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Sortie : [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, nous allons utiliser le paramètre key et personnaliser 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 

Nous aimerions utiliser la fonction ci-dessus comme clé.

Exécutez maintenant la cellule de code suivante.

nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Sortie : [25, 6, 17, 13, 9]

Prenez une minute pour analyser la sortie.

Remarquez qu’au lieu du tri normal, vous personnalisez maintenant votre tri en fonction de la clé qui est mod5.

  • Le nombre qui laisse le plus petit reste lorsqu’il est divisé par 5 vient maintenant en premier.
  • 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 bien le cas, exécutez l’extrait de code suivant.

nums = [25,13,6,17,9]

for num in nums :
  print(f"{num} laisse un reste {num%5} lorsqu'il est divisé par 5")

# Sortie
25 laisse un reste de 0 lorsqu'il est divisé par 5
13 laisse le reste 3 lorsqu'il est divisé par 5
6 laisse le reste 1 lorsqu'il est divisé par 5
17 feuilles reste 2 lorsque divisé par 5
9 laisse le reste 4 lorsqu'il est divisé par 5

5 divise exactement 25, et le reste est 0. C’est donc le premier élément de la liste triée. 6 laisse un reste de 1, c’est donc le deuxième élément, et ainsi de suite. 9 laisse un reste de 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 utiliser des fonctions lambda. En Python, les lambdas sont des fonctions anonymes d’une ligne. lambda args : expression renvoie l’expression calculée sur les args.

Réécrivons maintenant le tri ci-dessus à l’aide de l’expression lambda, comme indiqué ci-dessous.

nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Sortie : [25, 6, 17, 13, 9]

Jusqu’à présent, vous avez appris à trier une liste de nombres. Voyons maintenant comment trier une liste de chaînes de caractères en Python.

Comment trier une liste Python par ordre alphabétique

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

python-sort-list

Dans notre exemple, students est une liste d’étudiants de Poudlard. Et nous aimerions les trier dans l’ordre alphabétique de leurs noms.

Lorsque vous triez une liste de chaînes de caractères, le tri par défaut est l’ordre alphabétique.

étudiants = ["Harry", "Ron", "Hermione", "Draco", "Cedric"]

Imprimons la liste triée pour vérifier le résultat du tri.

étudiants.sort()
print(élèves)

# Sortie
['Cedric', 'Draco', 'Harry', 'Hermione', 'Ron']

Comment trier une liste Python dans l’ordre alphabétique inverse ?

Pour 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(élèves)

# Sortie
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

D’après la sortie, vous pouvez voir que la liste a été triée dans l’ordre inverse.

Comment utiliser le paramètre clé Personnaliser le tri

Dans cette section, nous allons personnaliser le tri à l’aide du paramètre clé facultatif.

Considérons la liste suivante, les maisons.

maisons = [
            {1 : "Draco", "maison" : "Serpentard"},
            {2 : "Harry", "maison" : "Gryffondor" },
            {3 : "Cédric", "maison" : "Poufsouffle" }
         ]

Ici, les maisons sont une liste de dictionnaires. Chaque dictionnaire contient deux paires clé-valeur, l’une représentant le nom des élèves et l’autre la maison à laquelle ils appartiennent.

Nous souhaitons à présent trier cette liste de maisons dans l’ordre alphabétique des maisons auxquelles elles appartiennent.

Comme vous l’avez peut-être deviné, nous devons définir le paramètre clé comme étant la maison de l’élève en question.

Afin de récupérer la maison de chaque étudiant, vous pouvez définir une fonction returnHouse(), comme indiqué ci-dessous.

def returnHouse(étudiant) :
  return étudiant['maison']

Cette fonction renvoie la maison à laquelle appartient l’étudiant en question.

Vous pouvez maintenant appeler la méthode sort() sur la liste des maisons, comme indiqué ci-dessous.

houses.sort(key=returnHouse)

Dans le résultat ci-dessous, vous remarquerez que la liste est triée par maison et non par nom d’élève. C’est pourquoi nous avons Gryffondor, Poufsouffle et Serpentard, dans l’ordre alphabétique.

print(maisons)

# Sortie
{2 : 'Harry', 'house' : 'Gryffondor'}, 
{3 : 'Cedric', 'maison' : 'Hufflepuff'}, 
{1 : 'Draco', 'maison' : 'Serpentard'}]

Pour définir le paramètre clé en conséquence, vous pouvez également utiliser une fonction lambda. Pour chaque élément de la liste, cette fonction renvoie la maison correspondant à cet élément.

exécutez la cellule de code suivante pour le vérifier.

houses.sort(key=lambda student:student["house"])
print(maisons)

# Sortie
[{2 : 'Harry', 'house' : 'Gryffondor'}, 
{3 : 'Cédric', 'maison' : 'Poufsouffle'}, 
{1 : "Draco", "maison" : "Serpentard" }]

Dans tous les exemples présentés jusqu’à présent, vous avez utilisé la méthode sort() sur une liste. Vous savez maintenant qu’elle modifie la liste d’origine.

Que faire si vous souhaitez conserver la liste d’origine telle quelle, mais obtenir une copie triée de la liste ?

En Python, vous pouvez utiliser la fonction sorted() pour y parvenir.

Syntaxe de la fonction Python sorted()

La fonction sorted() prend en argument une liste ou une collection quelconque. Elle 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 la suivante :

 = triée(, inverse = True | False, clé = )

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

  • est un objet liste Python valide et est un paramètre obligatoire.
  • reverse et key sont des paramètres optionnels

Remarque: contrairement à la méthode sort() qui n’agit que sur les listes, la fonction sorted() peut être utilisée pour trier n’importe quel itérable Python, comme les listes, les chaînes de caractères et les dictionnaires.

Comment trier une liste Python en utilisant la fonction sorted()

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

Vous pouvez appeler la fonction sorted() avec nums comme argument. Et l’assigner à la liste sorted_nums1.

nums = [25,13,6,17,9]
nombres_sortis1 = trié(nombres)
print(nombres_sortis1)

# Sortie : [6, 9, 13, 17, 25]

Dans la sortie ci-dessus, vous pouvez voir que nums a été trié par défaut dans l’ordre croissant.

Notez également que la liste originale nums n’est pas modifiée, car sorted() renvoie une nouvelle liste. Vous pouvez le vérifier ci-dessous.

print(nums)
 # Sortie : [25, 13, 6, 17, 9]

#2. Maintenant, mettez le paramètre optionnel reverse à True et obtenez sorted_nums2.

Comme le montre la cellule de code ci-dessous, sorted_nums2 est une nouvelle liste dont les éléments sont triés dans l’ordre décroissant.

sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Sortie : [25, 17, 13, 9, 6]

#3. Dans cet exemple, nous allons travailler avec une liste de chaînes de caractères.

Comme dans les exemples précédents, l’appel à la fonction sorted() renvoie une nouvelle liste. Les éléments sont triés par ordre alphabétique.

fruits = ['poires', 'fraises', 'pommes', 'ananas', 'myrtilles']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Sortie :
['pomme', 'myrtille', 'poires', 'ananas', 'fraise']

#4. Maintenant, personnalisons le tri en utilisant le paramètre optionnel key. Définissez la clé à len. Cela permettra de trier la liste en fonction de la longueur des chaînes de caractères.

Note : En Python, la fonction intégrée len() prend en compte n’importe quel itérable, comme les listes, les chaînes, les tuples, etc. Elle renvoie la longueur de l’itérable.

La chaîne ayant 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 = ['poire', 'fraise', 'pomme', 'ananas', 'myrtille']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Sortie :
['poire', 'pomme', 'ananas', 'myrtille', 'fraise']

Dans le résultat ci-dessus, poire est la chaîne la plus courte et fraise est la chaîne la plus longue.

Vous pouvez également lire comment inverser une liste en Python pour la faire tourner à l’envers.

Méthode Python sort() et fonction sorted()

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

Méthode Python .sort()Fonction Python sorted()
Trie la liste en 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 autres collections
Le type de retour est NoneRenvoie une copie triée de l’itérable

Pour résumer 👩‍🏫

J’espère que ce tutoriel sur les listes Python vous a été utile.

Résumons rapidement ce que nous avons couvert.

  • Utilisez list.sort(reverse = True | False, key = ) avec les paramètres optionnels reverse et key pour trier une liste à la place.
  • Utilisez sorted(list, reverse = True | False, key = ) pour obtenir une copie triée de la liste.

Maintenant que vous avez appris à trier les listes en Python, découvrez la compréhension des listes en Python. Vous pouvez également apprendre à manipuler 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 de Geekflare.