Como classificar listas em Python

Este 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ção sorted()
  • 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() vs sorted()

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.

  • é 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 .
  • 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 números 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 números da 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 chave.

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 chave 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 args.

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, os alunos 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 chave opcional.

Considere a lista a seguir, casas.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Aqui, casas é 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-chave 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 chave 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.

  • é qualquer objeto de lista Python válido e é um parâmetro obrigatório.
  • reverse e key são parâmetros opcionais

Nota: Ao contrário do método sort() que atua apenas em listas, a função sorted() 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 chave opcional. Defina a chave 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.

Python .sort() MethodPython sorted() FunctionOrdena a lista no lugar—modifica a lista originalRetorna uma nova lista ordenadaFunciona apenas com listas do PythonFunciona com iteráveis ​​do Python, como listas, strings e outras coleçõesTem o tipo de retorno NenhumRetorna uma cópia ordenada 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 = ) com os parâmetros opcionais reverse e key para classificar uma lista no local.
  • Use sorted(list, reverse = True | False, key = ) 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 Python Online etechpt.com.

  O que é um ataque man-in-the-middle?