Fonctions prédéfinies du langage Python☘
Le langage Python propose, pour trier une liste:
- la méthode
sort
- la fonction
sorted
.
Différence entre sort
et sorted
.☘
-
La méthode
sort
permet de trier une liste en place: c'est la liste à laquelle on applique la méthode qui est modifiée. La méthodesort
renvoie l'objetNone
. -
La fonction
sorted
ne modifie pas la liste qui lui est donnée en argument, elle renvoie une liste triée contenant les mêmes éléments que la liste donnée en argument.
Note
Une autre différence entre ces deux fonctions sort
et sorted
:
sort
est une méthode de la classelist
.sorted
est une fonction prenant en paramètre une liste.
Ce que signifie "méthode de classe" sera clarifié en terminale durant le cours d'initiation à la POO (programmation orientée objet). Pour cette année, la différence entre fonction usuelle (le cas de sorted
) et fonction méthode (le cas de sort
) apparaîtra dans la syntaxe d'utilisation de ces deux fonctions.
Exemples☘
On dispose d'une liste d'entiers:
L = [4, 42, 89, 1, 3, -4, 666, -777]
Tri avec sort
☘
Dans un terminal:
>>> L = [4, 42, 89, 1, 3, -4, 666, -777]
>>> L.sort()
>>> L
[-777, -4, 1, 3, 4, 42, 89, 666]
Observez:
- la syntaxe (la liste suivie d'un point suivie de l'appel à la méthode)
- le fait que la liste initiale est modifiée.
On peut vérifier que la méthode sort
renvoie l'objet None
:
>>> L = [4, 42, 89, 1, 3, -4, 666, -777]
>>> a = L.sort()
>>> print(a)
None
Conséquence: vous penserez à ne pas faire d'affectation lors d'un appel à sort
, cette affectation n'aurait aucune utilité.
Tri avec sorted
.☘
>>> L = [4, 42, 89, 1, 3, -4, 666, -777]
>>> A = sorted(L)
>>> A
[-777, -4, 1, 3, 4, 42, 89, 666]
>>> L
[4, 42, 89, 1, 3, -4, 666, -777]
Observez:
sorted
est une fonction classique qu'on applique à une liste.- La fonction renvoie une liste triée, contenant les mêmes éléments que la liste donnée en argument.
- La liste donnée en argument n'est pas modifiée.
reverse
☘
Vous avez pu observer dans le paragraphe précédent que nos deux fonctions triaient par défaut en ordre croissant.
Pour obtenir l'ordre décroissant, on utilisera reverse
:
- Avec
sort
:
>>> L = [4, 42, 89, 1, 3, -4, 666, -777]
>>> L.sort(reverse=True)
>>> L
[666, 89, 42, 4, 3, 1, -4, -777]
- Avec
sorted
:
>>> L = [4, 42, 89, 1, 3, -4, 666, -777]
>>> A = sorted(L, reverse=True)
>>> A
[666, 89, 42, 4, 3, 1, -4, -777]
>>> L
[4, 42, 89, 1, 3, -4, 666, -777]