O método sort () classifica os elementos de uma determinada lista em uma ordem crescente ou decrescente específica.
A sintaxe do sort()
método é:
list.sort (key =…, reverse =…)
Alternativamente, você também pode usar a função interna Sort () do Python para o mesmo propósito.
classificado (lista, chave =…, reverso =…)
Nota: A diferença mais simples entre sort()
e sorted()
é: sort()
muda a lista diretamente e não retorna nenhum valor, enquanto sorted()
não muda a lista e retorna a lista ordenada.
Parâmetros sort ()
Por padrão, sort()
não requer nenhum parâmetro extra. No entanto, ele possui dois parâmetros opcionais:
- reverso - se
True
, a lista classificada é invertida (ou classificada em ordem decrescente) - tecla - função que serve como uma chave para a comparação de classificação
Valor de retorno de sort ()
O sort()
método não retorna nenhum valor. Em vez disso, ele altera a lista original.
Se você quiser que uma função retorne a lista classificada em vez de alterar a lista original, use sorted()
.
Exemplo 1: classificar uma determinada lista
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Resultado
Lista ordenada: ('a', 'e', 'i', 'o', 'u')
Classificar em ordem decrescente
O sort()
método aceita um reverse
parâmetro como argumento opcional.
Configuração reverse = True
classifica a lista em ordem decrescente.
list.sort(reverse=True)
Como alternativa sorted()
, você pode usar o código a seguir.
sorted(list, reverse=True)
Exemplo 2: classificar a lista em ordem decrescente
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Resultado
Lista ordenada (em ordem decrescente): ('u', 'o', 'i', 'e', 'a')
Classifique com função personalizada usando a tecla
Se você quiser sua própria implementação para classificação, o sort()
método também aceita uma key
função como um parâmetro opcional.
Com base nos resultados da função-chave, você pode classificar a lista fornecida.
list.sort(key=len)
Alternativamente para classificado:
sorted(list, key=len)
Aqui len
está a função embutida do Python para contar o comprimento de um elemento.
A lista é classificada com base no comprimento de cada elemento, da contagem mais baixa para a mais alta.
Sabemos que uma tupla é classificada usando seu primeiro parâmetro por padrão. Vejamos como personalizar o sort()
método de classificação usando o segundo elemento.
Exemplo 3: Classifique a lista usando a tecla
# take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)
Resultado
Lista ordenada: ((4, 1), (2, 2), (1, 3), (3, 4))
Vamos dar outro exemplo. Suponha que temos uma lista de informações sobre os funcionários de um escritório onde cada elemento é um dicionário.
Podemos classificar a lista da seguinte maneira:
# sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')
Resultado
(('Nome': 'Alan Turing', 'idade': 25, 'salário': 10.000), ('Nome': 'John Hopkins', 'idade': 18, 'salário': 1000), ('Nome ':' Mikhail Tal ',' idade ': 40,' salário ': 15000), (' Nome ':' Sharon Lin ',' idade ': 30,' salário ': 8000)) ((' Nome ':' John Hopkins ',' idade ': 18,' salário ': 1000), (' Nome ':' Alan Turing ',' idade ': 25,' salário ': 10000), (' Nome ':' Sharon Lin ', 'idade': 30, 'salário': 8000), ('Nome': 'Mikhail Tal', 'idade': 40, 'salário': 15000)) (('Nome': 'Mikhail Tal', 'idade' : 40, 'salário': 15000), ('Nome': 'Alan Turing', 'idade': 25, 'salário': 10000), ('Nome ':' Sharon Lin ',' idade ': 30,' salário ': 8000), (' Nome ':' John Hopkins ',' idade ': 18,' salário ': 1000))
Aqui, para o primeiro caso, nossa função personalizada retorna o nome de cada funcionário. Como o nome é a string
, Python por padrão o classifica em ordem alfabética.
Para o segundo caso, age ( int
) é retornado e classificado em ordem crescente.
Para o terceiro caso, a função retorna o salary ( int
) e é classificada em ordem decrescente usando reverse = True
.
É uma boa prática usar a função lambda quando a função pode ser resumida em uma linha. Portanto, também podemos escrever o programa acima como:
# sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')
Resultado
(('Nome': 'Alan Turing', 'idade': 25, 'salário': 10.000), ('Nome': 'John Hopkins', 'idade': 18, 'salário': 1000), ('Nome ':' Mikhail Tal ',' idade ': 40,' salário ': 15000), (' Nome ':' Sharon Lin ',' idade ': 30,' salário ': 8000)) ((' Nome ':' John Hopkins ',' idade ': 18,' salário ': 1000), (' Nome ':' Alan Turing ',' idade ': 25,' salário ': 10000), (' Nome ':' Sharon Lin ', 'idade': 30, 'salário': 8000), ('Nome': 'Mikhail Tal', 'idade': 40, 'salário': 15000)) (('Nome': 'Mikhail Tal', 'idade' : 40, 'salário': 15000), ('Nome': 'Alan Turing', 'idade': 25, 'salário': 10000), ('Nome ':' Sharon Lin ',' idade ': 30,' salário ': 8000), (' Nome ':' John Hopkins ',' idade ': 18,' salário ': 1000))
Para saber mais sobre funções lambda, visite Python Lambda Functions.