Comment trier les listes en Python

How Sort Lists Python



Cet article couvrira un guide sur le tri des listes en Python. Un objet de liste Python est une collection d'un ou plusieurs éléments séparés par des virgules. C'est un objet itérable et ses éléments sont accessibles en itérant sur la liste à l'aide d'instructions de boucle et d'autres expressions. Vous pouvez trier une liste Python à l'aide des méthodes de tri et de tri, les deux sont expliquées dans l'article. Tous les exemples de code de cet article sont testés avec Python 3.9.5 dans Ubuntu 21.04.

Méthode de tri

La méthode sort trie une liste sur place. En d'autres termes, il modifiera l'objet de liste que vous allez trier et réorganisera son élément. Si vous n'avez pas besoin de la liste d'origine et que cela ne vous dérange pas que la liste change l'ordre des éléments en place, c'est la méthode la plus efficace en Python pour trier une liste. Considérez cet exemple :







l= [2, 8, 6, 4]

l.sorte()

imprimer (l)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :



[2, 4, 6, 8]

La première instruction de l'exemple de code définit une liste. Ensuite, la méthode sort est appelée sur la liste. Lorsque vous imprimez la liste, vous pouvez voir que l'ordre de la liste d'origine a été modifié.



Par défaut, Python trie une liste par ordre croissant. Si vous souhaitez trier une liste par ordre décroissant, utilisez la méthode inverse, comme indiqué dans l'exemple de code ci-dessous :





l= [2, 8, 6, 4]

l.sorte()

l.inverser()

imprimer (l)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

[8, 6, 4, 2]

La méthode inverse modifie également une liste Python sur place sans créer de nouvelle liste.



Si votre liste contient des éléments de chaîne, l'appel de la méthode de tri la classera par ordre alphabétique où les symboles et les nombres sont classés en premier. Jetez un œil à l'exemple de code ci-dessous :

l= ['s', 'à', 'Avec', '4', '#']

l.sorte()
imprimer (l)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['#', '4', 'à', 's', 'Avec']

Vous pouvez également utiliser la méthode inverse sur une liste contenant des éléments de chaîne.

l= ['s', 'à', 'Avec', '4', '#']

l.sorte()

l.inverser()

imprimer (l)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['Avec', 's', 'à', '4', '#']

Méthode triée

La méthode triée trie également une liste Python, de la même manière que la méthode sort. Cependant, au lieu de modifier la liste d'origine, il renvoie une nouvelle liste afin que votre liste d'origine ne soit pas modifiée au cas où vous souhaiteriez la réutiliser. Considérez le code ci-dessous :

liste1= ['s', 'à', 'Avec', '4', '#']

liste2= trié(liste1)

imprimer (liste1,liste2)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['s', 'à', 'Avec', '4', '#'] ['#', '4', 'à', 's', 'Avec']

Vous pouvez voir dans la sortie que list1 est intact et list2 a maintenant des éléments triés. Vous pouvez également utiliser la méthode inverse sur list2 pour modifier sa méthodologie de commande.

Argument inversé

Vous pouvez utiliser l'argument reverse comme alternative à la fonction reverse dans les méthodes de tri et de tri pour obtenir une liste triée par ordre décroissant. Il suffit de lui fournir une valeur True pour modifier l'ordre de tri :

liste1= ['s', 'à', 'Avec', '4', '#']

liste2= trié(liste1,inverser=Vrai)

imprimer (liste1,liste2)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['s', 'à', 'Avec', '4', '#'] ['Avec', 's', 'à', '4', '#']

Utilisation de la fonction de touche pour spécifier votre propre logique de tri des éléments d'une liste

Dans les méthodes de tri et de tri, vous pouvez spécifier un argument de clé supplémentaire qui prend une fonction appelable comme valeur. Cet argument clé peut se voir attribuer une fonction existante à partir de modules Python intégrés ou vous pouvez fournir votre propre fonction avec une logique personnalisée. Jetez un œil à l'exemple de code ci-dessous :

liste1= ['abcde', 'xyz', 'ijkl']

liste2= trié(liste1,clé=longueur)

imprimer (liste1,liste2)

liste1.sorte(clé=longueur)

imprimer (liste1)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']

['xyz', 'ijkl', 'abcde']

L'exemple de code illustre l'utilisation de l'argument clé dans les méthodes de tri et de tri. La fonction qui lui est fournie s'appelle len qui détermine la longueur d'un objet chaîne ou d'un itérable. La fonction ou l'appelable ne devrait à l'origine prendre qu'un seul argument. Vous l'affectez à l'argument clé sans utiliser d'accolades. La fonction appelable fournie à l'argument clé est appelée sur chaque élément de la liste. Les valeurs renvoyées par cette méthode appelable sont ensuite utilisées comme clé pour trier la liste. Par conséquent, fournir la fonction len à l'argument clé trie les éléments d'une liste dans l'ordre de leur longueur, c'est-à-dire du plus court au plus long. Comme indiqué précédemment, vous pouvez toujours utiliser la méthode inverse pour inverser la méthodologie de tri.

Vous pouvez également utiliser votre propre fonction personnalisée ou des fonctions lambda à une ligne qui renvoient la valeur d'une seule expression. Jetez un œil à l'exemple de code ci-dessous où une liste contient des tuples de l'inventaire actuel de caisses de fruits :

liste1= [('mangue', 99), ('Orange', 51), ('banane', 76)]

liste1.sorte(clé=lambdainventaire : inventaire[1])

imprimer (liste1)

Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

[('Orange', 51), ('banane', 76), ('mangue', 99)]

La fonction lambda est fournie avec un inventaire d'arguments, qui est chaque élément de la liste sous forme de tuple. Il renvoie ensuite le deuxième élément de chaque tuple en tant que clé (à l'index 1). La fonction de tri trie ensuite tous les tuples par son deuxième élément dans l'ordre croissant. Vous pouvez également utiliser la fonction reverse ou l'argument reverse sur le résultat final pour inverser l'ordre de tri.

Conclusion

Voici quelques moyens de trier le contenu d'une liste itérable en Python. L'argument clé vous permet d'écrire votre propre logique de tri personnalisée, adaptée aux applications qui peuvent avoir des besoins différents de ceux des méthodes de tri intégrées.