Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Classe « list » Python 3.11.3

Méthode builtins.list.sort

Signature de la méthode sort

 def sort(self, *, key=None, reverse=False) -> None

Description

Cette méthode trie, sur place, la collection courante. Le tri sera réalisé en utilisant l'opérateur < soit directement sur les valeurs de la liste, soit sur une clé de comparaison extraite pour chaque entrée de la liste.

La méthode sort accepte deux paramètres nommés que vous pouvez spécifier dans n'importe quel ordre, étant donné qu'il s'agit d'une méthode à nombre variable de paramètres.

help(list.sort)

Sort the list in ascending order and return None.

The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
order of two equal elements is maintained).

If a key function is given, apply it once to each list item and sort them,
ascending or descending, according to their function values.

The reverse flag can be set to sort in descending order.

Paramètres

ParamètreDescription
 self : list 
La liste courante. Rappel : self est implicitement passée lors de l'appel de la méthode.
 key : callable = None 
Une fonction (ou une lambda) permettant d'extraire une clé de comparaison pour le tri. Ce paramètre est très utile si la liste contient des données complexes à trier (objects, disctionnaires...).
 reverse : bool = False 
Indique si vous souhaitez trier la liste dans l'ordre inverse ou non.

Valeur de retour

Cette méthode ne renvoie aucune valeur.

Exemple(s) de code

Exemple basique de tri d'une liste d'entiers

 1 
 2 
 3 
 4 
 5 
 6 
#!/usr/bin/python3

data = [50, 20, 30, 80, 60, 10, 70, 40, 90]
print(data)
data.sort()
print(data)
Exemple de tri d'une liste

Et voici le résultat produit par ce programme :

[50, 20, 30, 80, 60, 10, 70, 40, 90]
[10, 20, 30, 40, 50, 60, 70, 80, 90]

Comment trier une liste dans le sens inverse ?

Pour trier une liste en sens inverse, il suffit d'ajouter le paramètre reverse=True lors de l'appel de la méthode sort.

 1 
 2 
 3 
 4 
 5 
 6 
#!/usr/bin/python3

data = [50, 20, 30, 80, 60, 10, 70, 40, 90]
print(data)
data.sort(reverse=True)
print(data)
Exemple de tri d'une liste

Et voici le résultat produit par ce programme :

[50, 20, 30, 80, 60, 10, 70, 40, 90]
[90, 80, 70, 60, 50, 40, 30, 20, 10]

Comment trier une liste de dictionnaires ?

Pour trier une liste de dictionnaires, il est nécessaire de fournir une fonction (ou une lambda) d'extraction d'une clé de comparaison. Dans l'exemple ci-dessous, la définition lambda spy: spy["lastName"].lower() permet de réaliser un tri par nom de famille de manière insensible à la casse. Notez que la troisième entrée de la liste contient un nom de famille en minuscules contrairement aux autres.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
#!/usr/bin/python3

spies = [
    { "firstName": "Jason", "lastName": "Bourne", "agency": "CIA" },
    { "firstName": "Ethan", "lastName": "Hunt", "agency": "IMF" },
    { "firstName": "James", "lastName": "bond", "agency": "MI6" }
]

for spy in spies:
    print(spy)
    
print("--------------------------------------------------")

spies.sort(key = lambda spy: spy["lastName"].lower())

for spy in spies:
    print(spy)
Exemple de tri d'une liste de dictionnaires

Et voici le résultat produit par ce programme :

{'firstName': 'Jason', 'lastName': 'Bourne', 'agency': 'CIA'}
{'firstName': 'Ethan', 'lastName': 'Hunt', 'agency': 'IMF'}
{'firstName': 'James', 'lastName': 'bond', 'agency': 'MI6'}
--------------------------------------------------
{'firstName': 'James', 'lastName': 'bond', 'agency': 'MI6'}
{'firstName': 'Jason', 'lastName': 'Bourne', 'agency': 'CIA'}
{'firstName': 'Ethan', 'lastName': 'Hunt', 'agency': 'IMF'}

Voir aussi

Méthode reverse