Comment trier les listes dans Python

Comment trier les listes dans Python

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

Méthode de tri

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

l = [2, 8, 6, 4]
l.trier()
Imprimer (L)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[2, 4, 6, 8]

La première instruction de l'échantillon de code définit une liste. Ensuite, la méthode «tri» est appelée sur la liste. Lorsque vous imprimez la liste, vous pouvez voir que la commande de la liste originale a été modifiée.

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

l = [2, 8, 6, 4]
l.trier()
l.inverse()
Imprimer (L)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[8, 6, 4, 2]

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

Si votre liste contient des éléments de chaîne, appeler la méthode de «tri», il le commandera par ordre alphabétique où les symboles et les nombres sont commandés en premier. Jetez un œil à l'échantillon de code ci-dessous:

l = ["s", "a", "z", "4", "#"]
l.trier()
Imprimer (L)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

['#', '4', 'a', 's', 'z']

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

l = ["s", "a", "z", "4", "#"]
l.trier()
l.inverse()
Imprimer (L)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

['z', 's', 'a', '4', '#']

Méthode triée

La méthode triée trie également une liste de python, de la même manière que la méthode «tri». Cependant, au lieu de modifier la liste d'origine, il renvoie une nouvelle liste afin que votre liste originale soit laissée intacte au cas où vous souhaitez le réutiliser. Considérez le code ci-dessous:

list1 = ["s", "a", "z", "4", "#"]
list2 = tri (list1)
Imprimer (list1, list2)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

['S', 'A', 'Z', '4', '#'] ['#', '4', 'A', 'S', 'Z']

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

Argument inversé

Vous pouvez utiliser l'argument «inversé» comme alternative à la fonction inversée dans les méthodes «tri» et «tri» pour obtenir une liste triée dans l'ordre descendant. Fournissez-le simplement une «vraie» valeur pour modifier l'ordre du tri:

list1 = ["s", "a", "z", "4", "#"]
list2 = tri (list1, inverse = true)
Imprimer (list1, list2)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

['s', 'a', 'z', '4', '#'] ['z', 's', 'a', '4', '#']

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

Dans les méthodes à la fois «tri» et «triée», vous pouvez spécifier un argument «clé» supplémentaire qui prend une fonction appelable comme sa 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'échantillon de code ci-dessous:

list1 = ["abcde", "xyz", "ijkl"]
list2 = tri (list1, key = len)
Imprimer (list1, list2)
liste 1.tri (key = len)
Imprimer (list1)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

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

L'exemple de code illustre l'utilisation de l'argument «clé» dans les méthodes «triées» et «tri». La fonction qui lui est fournie s'appelle «len» qui détermine la longueur d'un objet de chaîne ou d'un itérable. La fonction ou callable ne doit prendre qu'un seul argument. Vous l'affectez à l'argument «clé» sans utiliser de bretelles. La fonction appelable fournie à l'argument «clé» est appelée chaque élément de la liste. Les valeurs renvoyées de cette méthode appelée 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 en une lignée qui renvoient la valeur d'une seule expression. Jetez un œil à l'échantillon de code ci-dessous où une liste a des tuples de l'inventaire actuel des caisses de fruits:

list1 = [("mango", 99), ("orange", 51), ("banane", 76)]
liste 1.Trie (clé = inventaire lambda: inventaire [1])
Imprimer (list1)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[(«Orange», 51), («banane», 76), («mangue», 99)]

La fonction «Lambda» est fournie avec un argument «inventaire», qui est chaque élément de la liste sous forme de tuple. Il renvoie ensuite le deuxième élément de chaque tuple comme clé (à l'index 1). La fonction de tri trie alors tous les tuples par son deuxième élément dans l'ordre croissant. Vous pouvez également utiliser la fonction «inverse» ou l'argument «inversé» sur le résultat final pour inverser l'ordre du tri.

Conclusion

Ce sont quelques façons d'utiliser lesquelles vous pouvez trier le contenu d'une liste itérable dans 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 des méthodes de tri intégrées.