Tri de liste Python ()

La méthode sort () trie les éléments d'une liste donnée dans un ordre croissant ou décroissant spécifique.

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

 list.sort (clé =…, inverse =…)

Alternativement, vous pouvez également utiliser la fonction sorted () intégrée de Python dans le même but.

 trié (liste, clé =…, inverse =…)

Remarque: la différence la plus simple entre sort()et sorted()est: sort()modifie la liste directement et ne renvoie aucune valeur, tandis sorted()que ne modifie pas la liste et renvoie la liste triée.

Sort () Paramètres

Par défaut, sort()ne nécessite aucun paramètre supplémentaire. Cependant, il a deux paramètres facultatifs:

  • reverse - Si True, la liste triée est inversée (ou triée par ordre décroissant)
  • key - fonction qui sert de clé pour la comparaison de tri

Valeur renvoyée par sort ()

La sort()méthode ne renvoie aucune valeur. Au contraire, cela change la liste d'origine.

Si vous souhaitez qu'une fonction renvoie la liste triée plutôt que de modifier la liste d'origine, utilisez sorted().

Exemple 1: trier une liste donnée

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Production

 Liste triée: ('a', 'e', ​​'i', 'o', 'u')

Trier par ordre décroissant

La sort()méthode accepte un reverseparamètre comme argument facultatif.

Le paramètre reverse = Truetrie la liste dans l'ordre décroissant.

 list.sort(reverse=True)

Sinon sorted(), vous pouvez utiliser le code suivant.

 sorted(list, reverse=True)

Exemple 2: trier la liste par ordre décroissant

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Production

 Liste triée (par ordre décroissant): ('u', 'o', 'i', 'e', ​​'a')

Trier avec la fonction personnalisée à l'aide de la touche

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

En fonction des résultats de la fonction clé, vous pouvez trier la liste donnée.

 list.sort(key=len)

Alternativement pour trié:

 sorted(list, key=len)

Voici lenla fonction intégrée de Python pour compter la longueur d'un élément.

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

Nous savons qu'un tuple est trié en utilisant son premier paramètre par défaut. Voyons comment personnaliser la sort()méthode de tri à l'aide du deuxième élément.

Exemple 3: Trier la liste à l'aide de la touche

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

Production

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

Prenons un autre exemple. Supposons que nous ayons une liste d'informations sur les employés d'un bureau où chaque élément est un dictionnaire.

Nous pouvons trier la liste de la manière suivante:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Production

(('Nom': 'Alan Turing', 'âge': 25, 'salaire': 10000), ('Nom': 'John Hopkins', 'âge': 18, 'salaire': 1000), ('Nom ':' Mikhail Tal ',' âge ': 40 ans,' salaire ': 15000), (' Nom ':' Sharon Lin ',' âge ': 30 ans,' salaire ': 8000)) ((' Nom ':' John Hopkins ',' âge ': 18 ans,' salaire ': 1000), (' Nom ':' Alan Turing ',' âge ': 25,' salaire ': 10000), (' Nom ':' Sharon Lin ', 'age': 30, 'salaire': 8000), ('Name': 'Mikhail Tal', 'age': 40, 'salaire': 15000)) (('Name': 'Mikhail Tal', 'age' : 40, 'salaire': 15000), ('Nom': 'Alan Turing', 'âge': 25, 'salaire': 10000), ('Nom ':' Sharon Lin ',' âge ': 30 ans,' salaire ': 8000), (' Nom ':' John Hopkins ',' âge ': 18 ans,' salaire ': 1000))

Ici, pour le premier cas, notre fonction personnalisée renvoie le nom de chaque employé. Puisque le nom est a string, Python le trie par défaut en utilisant l'ordre alphabétique.

Pour le second cas, age ( int) est renvoyé et est trié par ordre croissant.

Pour le troisième cas, la fonction renvoie le salaire ( int) et est triée dans l'ordre décroissant à l'aide de reverse = True.

Il est recommandé d'utiliser la fonction lambda lorsque la fonction peut être résumée sur une seule ligne. Ainsi, nous pouvons également écrire le programme ci-dessus comme:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Production

(('Nom': 'Alan Turing', 'âge': 25, 'salaire': 10000), ('Nom': 'John Hopkins', 'âge': 18, 'salaire': 1000), ('Nom ':' Mikhail Tal ',' âge ': 40 ans,' salaire ': 15000), (' Nom ':' Sharon Lin ',' âge ': 30 ans,' salaire ': 8000)) ((' Nom ':' John Hopkins ',' âge ': 18 ans,' salaire ': 1000), (' Nom ':' Alan Turing ',' âge ': 25,' salaire ': 10000), (' Nom ':' Sharon Lin ', 'age': 30, 'salaire': 8000), ('Name': 'Mikhail Tal', 'age': 40, 'salaire': 15000)) (('Name': 'Mikhail Tal', 'age' : 40, 'salaire': 15000), ('Nom': 'Alan Turing', 'âge': 25, 'salaire': 10000), ('Nom ':' Sharon Lin ',' âge ': 30 ans,' salaire ': 8000), (' Nom ':' John Hopkins ',' âge ': 18 ans,' salaire ': 1000))

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

Articles intéressants...