Formation I.S.N.

sorted vs sort

sorted et sort

La fonction sorted prend en paramètre d'entrée une liste et retourne en sortie une nouvelle liste, triée en ordre croissant.

Exemple :


A = [2,4,1,5,90,0,-2]
B = sorted(A)


print(A) # affiche [2, 4, 1, 5, 90, 0, -2], la liste A n'a pas été modifiée
print(B) # affiche [-2, 0, 1, 2, 4, 5, 90]

La fonction sort est par contre une méthode s'appliquant aux objets de type list. Une telle méthode ne retourne rien : elle modifie la liste initiale (en la triant en ordre croissant).

Exemple :


A = [2,4,1,5,90,0,-2]
B = A.sort()

print(B) # affiche None car la méthode sort() ne renvoie rien

On n'effectue donc pas d'affectation (ligne 2 du script précédent) lorsqu'on applique la méthode sort :


A = [2,4,1,5,90,0,-2]
A.sort()

print(A) # affiche [-2, 0, 1, 2, 4, 5, 90]
		 # c'est bien l'objet A lui-même qui est modifié

sorted

La méthode sort est une méthode spécifique aux éléments de type list. Tandis que sorted peut s'appliquer à tout itérable.

Exemple :


A = "azer"
B = sorted(A)

print(A) # affiche "azer"
print(B) # affiche ['a', 'e', 'r', 'z']	  

print(type(A)) # affiche <class 'str'>
print(type(B)) # affiche <class 'list'>

Mais :


A = "azer"
A.sort() # affiche : AttributeError: 'str' object has no attribute 'sort'