Python trié ()

La fonction sorted () renvoie une liste triée à partir des éléments d'un itérable.

La sorted()fonction trie les éléments d'un itérable donné dans un ordre spécifique ( croissant ou décroissant ) et renvoie l'itérable trié sous forme de liste.

La syntaxe de la sorted()fonction est:

 trié (itérable, clé = Aucun, inverse = Faux)

Paramètres de la fonction sorted ()

sorted() peut prendre au maximum trois paramètres:

  • iterable - Une séquence (chaîne, tuple, liste) ou collection (ensemble, dictionnaire, ensemble figé) ou tout autre itérateur.
  • reverse (Facultatif) - Si True, la liste triée est inversée (ou triée par ordre décroissant). Par défaut, Falses'il n'est pas fourni.
  • key (Facultatif) - Une fonction qui sert de clé pour la comparaison de tri. La valeur par défaut est None.

Exemple 1: Trier la chaîne, la liste et le tuple

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Production

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Notez que dans tous les cas, une liste triée est renvoyée.

Remarque: Une liste a également la méthode sort () qui fonctionne de la même manière que sorted(). La seule différence est que la sort()méthode ne renvoie aucune valeur et modifie la liste d'origine.

Exemple 2: trier par ordre décroissant

La sorted()fonction accepte un reverseparamètre comme argument facultatif.

Le paramètre reverse = Truetrie l'itérable dans l'ordre décroissant.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Production

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , 'i', 'e', ​​'a')

paramètre clé dans la fonction triée () de Python

Si vous voulez votre propre implémentation pour le tri, sorted()accepte également une keyfonction comme paramètre facultatif.

En fonction de la valeur renvoyée de la fonction clé, vous pouvez trier l'itérable donné.

 trié (itérable, clé = len)

Voici len()la fonction intégrée de Python pour compter la longueur d'un objet.

La liste est triée en fonction de la longueur de l'élément, du plus petit au plus grand.

Exemple 3: Trier la liste en utilisant sorted () ayant une fonction clé

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Production

 Liste triée: ((4, 1), (2, 2), (1, 3), (3, 4))

Exemple 4: tri avec plusieurs clés

Supposons que nous ayons la liste suivante:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Nous voulons trier la liste de manière à ce que l'élève avec les notes les plus élevées soit au début. Dans le cas où les élèves ont des notes égales, ils doivent être triés de sorte que le plus jeune participant passe en premier.

Nous pouvons réaliser ce type de tri avec plusieurs clés en retournant un tuple au lieu d'un nombre.

Deux tuples peuvent être comparés en comparant leurs éléments en commençant par le premier. S'il y a égalité (les éléments sont égaux), le second élément est comparé, et ainsi de suite.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Utilisons cette logique pour construire notre logique de tri.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Production

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('Jean', 45, 12) )

Étant donné que la fonction logique de tri est petite et tient sur une seule ligne, la lambdafonction est utilisée à l'intérieur keyplutôt que de passer un nom de fonction distinct.

Le programme ci-dessus peut être écrit en utilisant la lambdafonction de la manière suivante:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Production

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('Jean', 45, 12) )

Pour en savoir plus sur les fonctions lambda, visitez les fonctions Python Lambda.

Articles intéressants...