Comment trier des listes en Python

Publié: 2022-03-30

Cet 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 fonction sorted()
  • 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() et sorted()

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 est False et la liste est triée par ordre croissant. Donnez True 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.

liste de tri python

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 et key sont des paramètres facultatifs

Note : 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 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.