Como classificar listas em Python
Publicados: 2022-03-30Este artigo ensinará como classificar uma lista em Python.
Em Python, você pode usar o método sort() para classificar uma lista no local. Ou você pode usar a função integrada sorted() para obter uma cópia ordenada da lista.
Neste tutorial, você aprenderá:
- Sintaxe do método
sort()
e da funçãosorted()
- Exemplos de código de classificação de listas em ordem crescente e decrescente
- Personalizar a classificação usando o parâmetro
key
- Diferença entre
sort()
vssorted()
Vamos começar!
Sintaxe do método Python sort()
O método sort()
atua em uma lista do Python. E ordena a lista no lugar - e modifica a lista original.
A sintaxe do método sort()
do Python é:
<list>.sort(reverse = True | False, key = <func>)
Vamos agora analisar a sintaxe acima.
-
<list>
é qualquer objeto de lista Python válido. -
reverse
é um parâmetro opcional que aceita True ou False. - O valor padrão de
reverse
éFalse
e a lista é classificada em ordem crescente. DêTrue
para classificar a lista em ordem decrescente. -
key
também é um parâmetro opcional definido como<func>
. -
<func>
pode ser uma função interna ou uma função definida pelo usuário.
Na próxima seção, você começará a codificar exemplos simples.
Como classificar a lista Python em ordem crescente
Considere os nums
da lista. Para classificar a lista em ordem crescente, você pode chamar o método sort()
na lista.
Execute o trecho de código a seguir.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
Os nums
lista foram classificados em ordem crescente e a lista original foi modificada. Isso é chamado de classificação no local .
Como classificar a lista Python em ordem decrescente
Para classificar a lista em ordem decrescente, defina reverse
para True
, conforme mostrado abaixo.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
Você pode ver que a lista agora está classificada em ordem decrescente.
Como usar a chave com o método Python sort()
Nesta seção, vamos usar o parâmetro key
e personalizar a classificação.
Aqui, mod5()
é uma função que recebe um número x
e retorna o resto quando o número x
é dividido por 5.
def mod5(x): return x % 5
E gostaríamos de usar a função acima como a key
.
Agora, execute a seguinte célula de código.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
Reserve um minuto para analisar a saída.
Observe como, em vez da classificação normal, agora você está personalizando sua classificação de acordo com a key
que é mod5
.
- O número que deixa o resto mínimo quando dividido por 5 vem primeiro agora.
- E o número que deixa o maior resto quando dividido por 5 é o último elemento da lista ordenada.
Para verificar se esse é o caso, execute o trecho de código a seguir.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 divide 25 exatamente, e o resto é 0. Então esse é o primeiro elemento na lista ordenada. 6 deixa um resto 1, então é o segundo elemento e assim por diante. 9 deixa o resto 4 quando dividido por 5, e é o último elemento da lista ordenada.
Em vez de definir uma função separada, você também pode usar funções lambda. Em Python, lambdas são funções anônimas de uma linha. lambda args: expression retorna a expressão calculada nos argumentos .
Agora, vamos reescrever a classificação acima usando a expressão lambda, conforme mostrado abaixo.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
Até agora, você aprendeu como ordenar uma lista de números. Em seguida, vamos ver como você pode classificar uma lista de strings em Python.
Como classificar a lista Python em ordem alfabética
Nesta seção, você aprenderá a classificar uma lista de strings — com exemplos inspirados em Harry Potter.
Em nosso exemplo, students
são uma lista de alunos em Hogwarts. E gostaríamos de classificá-los em ordem alfabética de seus nomes.
Ao classificar uma lista de strings, a classificação padrão é em ordem alfabética.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Vamos imprimir a lista ordenada para verificar o resultado da ordenação.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Como classificar a lista Python em ordem alfabética reversa
Para classificar a lista em ordem alfabética inversa, defina reverse
= True
, conforme mostrado no trecho de código abaixo.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
A partir da saída, você pode ver que a lista foi realmente classificada na ordem inversa.
Como usar o parâmetro chave Personalizar a classificação
Nesta seção, vamos personalizar a classificação usando o parâmetro de key
opcional.
Considere a lista a seguir, houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
Aqui, houses
é uma lista de dicionários. Cada dicionário contém dois pares de valores-chave, um denotando os nomes dos alunos e o outro a casa a que pertencem.
Agora, gostaríamos de ordenar esta lista de casas na ordem alfabética das casas a que pertencem.
Como você já deve ter adivinhado, devemos definir o parâmetro- key
para a casa dos alunos em particular.
Para recuperar a casa de cada aluno, você pode definir uma função returnHouse()
, conforme mostrado abaixo.
def returnHouse(student): return student['house']
Esta função retorna a casa à qual o aluno em particular pertence.
Agora, você pode chamar o método sort()
na lista de casas, conforme mostrado.
houses.sort(key=returnHouse)
Na saída abaixo, observe como a lista é ordenada pela casa e não pelos nomes dos alunos. É por isso que temos Grifinória, Lufa-Lufa e Sonserina – em ordem alfabética.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Para definir o parâmetro de key
de acordo, você também pode usar uma função lambda. Para cada item da lista, esta função retorna a casa para aquele item da lista.
Execute a seguinte célula de código para verificar isso.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Em todos os exemplos até agora, você usou o método sort()
em uma lista. E agora você sabe que isso modifica a lista original.
E se você quiser manter a lista original como está, mas obter uma cópia ordenada da lista?
Bem, em Python, você pode usar a função sorted()
para fazer isso.
Sintaxe da função ordenada () do Python
A função sorted()
recebe uma lista ou qualquer coleção como argumento. E retorna uma cópia ordenada da lista — e a lista original não é modificada.
A sintaxe para a função sorted()
do Python é:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Observe como a sintaxe é muito semelhante ao método sort()
que vimos anteriormente.
-
<list>
é qualquer objeto de lista Python válido e é um parâmetro obrigatório . -
reverse
ekey
são parâmetros opcionais
Nota : Ao contrário do método
sort()
que atua apenas em listas, a funçãosorted()
pode ser usada para classificar qualquer iterável do Python, como listas, strings e dicionários.
Como classificar a lista do Python usando a função sorted ()
#1. Neste exemplo, nums
é uma lista de números.
Você pode chamar a função sorted()
com nums
como argumento. E atribua-o à lista sorted_nums1
.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
Na saída acima, você pode ver que nums
foi classificado em ordem crescente por padrão.
Além disso, observe que a lista original nums
não é modificada - porque sorted()
retorna uma nova lista. Isso é verificado a seguir.
print(nums) # Output: [25, 13, 6, 17, 9]
#2 . Agora, defina o parâmetro opcional reverse
para True
e obtenha sorted_nums2
.
Conforme mostrado na célula de código abaixo, sorted_nums2
é uma nova lista com os itens classificados em ordem decrescente.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. Neste exemplo, vamos trabalhar com uma lista de strings.
Assim como nos exemplos anteriores, chamar a função sorted()
retorna uma nova lista. E os itens são classificados em ordem alfabética.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Agora, vamos personalizar a classificação usando o parâmetro de key
opcional. Defina a key
para len
. Isso classificará a lista com base no comprimento das strings.
Nota: Em Python, a função
len()
integrada aceita qualquer iterável, como listas, strings, tuplas e assim por diante. E retorna o comprimento do iterável.
A string com o menor comprimento aparece primeiro na lista ordenada e a string mais longa aparece no final da lista ordenada.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
Na saída acima, pera é a corda mais curta e morango é a mais longa.
Método Python sort() vs. função sorted()
Até agora, você aprendeu a usar o método sort()
, bem como a função sorted()
. Nesta seção, vamos enumerar as diferenças entre esses dois métodos.
Método Python .sort() | Função ordenada() do Python |
Classifica a lista no lugar—modifica a lista original | Retorna uma nova lista ordenada |
Funciona apenas com listas Python | Funciona com iteráveis Python, como listas, strings e outras coleções |
Tem tipo de retorno None | Retorna uma cópia classificada do iterável |
Resumindo
Espero que você tenha achado este tutorial de listas de Python útil.
Vamos resumir rapidamente o que cobrimos.
- Use list.sort(reverse = True | False, key = <func>) com os parâmetros opcionais reverse e key para classificar uma lista no local.
- Use sorted(list, reverse = True | False, key = <func>) para obter uma cópia ordenada da lista.
Agora que você aprendeu a classificar listas em Python, aprenda sobre a compreensão de listas em Python. Ou você também pode aprender a lidar com arquivos ou trabalhar com arquivos JSON em Python.
Você pode tentar os exemplos dados acima no compilador Geekflare Online Python.