Python List sort ()

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 reverseparâmetro como argumento opcional.

Configuração reverse = Trueclassifica 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 keyfunçã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 lenestá 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.

Artigos interessantes...