O Python oferece duas maneiras de classificar uma lista, o método de lista integrado lista.sort() e a função integrada sorted(). Embora ambos classifiquem os elementos de uma lista, se usados incorretamente, podem produzir resultados inesperados ou indesejados.


Diferenças e semelhanças entre sort() e sorted()


A principal diferença entre os dois é que lista.sort() ordenará a lista no local, alterando seus índices e retornando None, enquanto sorted() retornará uma nova lista ordenada deixando a lista original inalterada.


Outra diferença é que sorted() aceita qualquer iterável enquanto lista.sort() é um método da classe list e só pode ser usado com listas.


 

numeros = [2, 3, 1, 5, 6, 4, 0]

 

print(sorted(numeros))  

print(numeros)          

print(numeros.sort())    

print(numeros)  

  



Saída: -----------------------------------


[0, 1, 2, 3, 4, 5, 6]

[2, 3, 1, 5, 6, 4, 0]

None

[0, 1, 2, 3, 4, 5, 6]



Ambos lista.sort() e sorted() têm a mesma chave e argumentos opcionais reversos e podem ser chamados em cada elemento da lista antes de fazer comparações.


Quando usar cada um


lista.sort() deve ser usado sempre que se pretende alterar a lista e não se deseja recuperar a ordem original dos elementos. Por outro lado, sorted() deve ser usado quando o objeto a ser classificado é um iterável (por exemplo, lista, tupla, dicionário, string) e o resultado desejado é uma lista classificada contendo todos os elementos.