Aller au contenu

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éthode sort renvoie l'objet None.

  • 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 sortet sorted:

  • sort est une méthode de la classe list.
  • 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]