Este artigo cobrirá um guia sobre a classificação de listas em Python. Um objeto de lista Python é uma coleção de um ou mais itens separados por vírgulas. É um objeto iterável e seus elementos podem ser acessados por iteração na lista usando instruções de loop e outras expressões. Você pode classificar uma lista Python usando métodos de classificação e classificação, ambos são explicados no artigo. Todos os exemplos de código neste artigo são testados com Python 3.9.5 no Ubuntu 21.04.
Método de classificação
O método de classificação classifica uma lista no local. Em outras palavras, ele modificará o objeto de lista que você vai classificar e reordenará seu elemento. Se você não exige a lista original e não se importa que a lista mude sua ordem de elementos no local, este é o método mais eficiente em Python para classificar uma lista. Considere este exemplo:
a= [2, 8, 6, 4]
a.ordenar()
imprimir (a)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
[2, 4, 6, 8]
A primeira instrução no exemplo de código define uma lista. Em seguida, o método de classificação é chamado na lista. Ao imprimir a lista, você pode ver que a ordem da lista original foi alterada.
Por padrão, Python classifica uma lista em ordem crescente. Se você quiser classificar uma lista em ordem decrescente, use o método reverso, conforme mostrado no exemplo de código abaixo:
a= [2, 8, 6, 4]
a.ordenar()
a.reverter()
imprimir (a)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
[8, 6, 4, 2]O método reverso também altera uma lista Python no local, sem criar uma nova lista.
Se sua lista contiver elementos de string, chamar o método de classificação nela irá ordená-la alfabeticamente onde os símbolos e números são ordenados primeiro. Dê uma olhada no exemplo de código abaixo:
a= ['s', 'para', 'Com', '4', '#']a.ordenar()
imprimir (a)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
['#', '4', 'para', 's', 'Com']Você também pode usar o método reverso em uma lista contendo elementos de string.
a= ['s', 'para', 'Com', '4', '#']a.ordenar()
a.reverter()
imprimir (a)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
['Com', 's', 'para', '4', '#']Método Ordenado
O método classificado também classifica uma lista Python, da mesma forma que o método de classificação. No entanto, em vez de modificar a lista original, ele retorna uma nova lista para que sua lista original seja deixada intacta no caso de você querer reutilizá-la. Considere o código abaixo:
lista1= ['s', 'para', 'Com', '4', '#']lista2= classificado(lista1)
imprimir (lista1,lista2)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
['s', 'para', 'Com', '4', '#'] ['#', '4', 'para', 's', 'Com']Você pode ver na saída que list1 está intacta e list2 agora tem elementos classificados. Você também pode usar o método reverso na lista2 para alterar sua metodologia de ordenação.
Argumento Inverso
Você pode usar o argumento reverso como uma alternativa para a função reversa nos métodos de classificação e classificação para obter uma lista classificada em ordem decrescente. Basta fornecer um valor True para alterar a ordem de classificação:
lista1= ['s', 'para', 'Com', '4', '#']lista2= classificado(lista1,reverter=Verdade)
imprimir (lista1,lista2)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
['s', 'para', 'Com', '4', '#'] ['Com', 's', 'para', '4', '#']Usando a função de tecla para especificar sua própria lógica para classificar os elementos de uma lista
Nos métodos de classificação e classificação, você pode especificar um argumento de chave adicional que recebe uma função que pode ser chamada como seu valor. Este argumento-chave pode ser atribuído a uma função existente a partir de módulos Python integrados ou você pode fornecer sua própria função com lógica personalizada. Dê uma olhada no exemplo de código abaixo:
lista1= ['abcde', 'xyz', 'ijkl']lista2= classificado(lista1,chave=len)
imprimir (lista1,lista2)
lista1.ordenar(chave=len)
imprimir (lista1)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']['xyz', 'ijkl', 'abcde']
O exemplo de código ilustra o uso do argumento chave em métodos classificados e de classificação. A função fornecida a ele é chamada len, que determina o comprimento de um objeto string ou de um iterável. A função ou chamável deve originalmente ter apenas um argumento. Você o atribui ao argumento-chave sem usar colchetes. A função chamável fornecida para o argumento chave é chamada em cada elemento da lista. Os valores retornados deste método chamável são então usados como uma chave para classificar a lista. Portanto, fornecer a função len ao argumento-chave classifica os elementos de uma lista na ordem de seu comprimento, ou seja, do mais curto para o mais longo. Conforme declarado anteriormente, você sempre pode usar o método reverso para reverter a metodologia de classificação.
Você também pode usar sua própria função personalizada ou funções lambda de uma linha que retornam o valor de uma única expressão. Dê uma olhada no exemplo de código abaixo, onde uma lista contém tuplas do estoque atual de caixas de frutas:
lista1= [('manga', 99), ('laranja', 51), ('banana', 76)]lista1.ordenar(chave=lambdainventário: inventário[1])
imprimir (lista1)
Depois de executar o exemplo de código acima, você deve obter a seguinte saída:
[('laranja', 51), ('banana', 76), ('manga', 99)]A função lambda é fornecida com um inventário de argumentos, que é cada elemento da lista na forma de tupla. Em seguida, ele retorna o segundo elemento de cada tupla como chave (no índice 1). A função de classificação então classifica todas as tuplas por seu segundo elemento em ordem crescente. Você também pode usar a função reversa ou o argumento reverso no resultado final para inverter a ordem de classificação.
Conclusão
Estas são algumas maneiras de classificar o conteúdo de uma lista iterável em Python. O argumento chave permite que você escreva sua própria lógica de classificação personalizada, adequada para aplicativos que podem ter necessidades diferentes dos métodos de classificação integrados.