Este artigo explora as diferentes formas de organizar listas em Python.
Em Python, a organização de listas pode ser alcançada através do método sort()
, que modifica a lista original, ou pela função integrada sorted()
, que gera uma nova lista ordenada.
Neste guia, você aprenderá sobre:
- A sintaxe do método
sort()
e da funçãosorted()
. - Exemplos de código para ordenar listas de forma crescente e decrescente.
- Como personalizar a ordenação utilizando o parâmetro
key
. - As diferenças cruciais entre
sort()
esorted()
.
Vamos começar! 🚀
Entendendo a Sintaxe do Método sort()
em Python
O método sort()
é aplicado diretamente em uma lista Python, reorganizando seus elementos na ordem especificada, alterando a lista original.
A estrutura do método sort()
em Python é:
<lista>.sort(reverse = True | False, key = <função>)
Analisando a estrutura:
<lista>
: Representa qualquer objeto de lista válido em Python.reverse
: Parâmetro opcional, aceitandoTrue
ouFalse
. O padrão éFalse
, para ordem crescente. UseTrue
para ordem decrescente.key
: Parâmetro opcional que recebe uma função (<função>
). Essa função pode ser interna ou definida pelo usuário.
Na próxima seção, vamos explorar exemplos práticos.
Ordenando uma Lista Python em Ordem Crescente
Para listas numéricas, o método sort()
é utilizado para organização crescente.
▶ Observe o seguinte código:
numeros = [25, 13, 6, 17, 9]
numeros.sort()
print(numeros)
# Saída: [6, 9, 13, 17, 25]
A lista foi organizada em ordem crescente, com a lista original sendo modificada. Este processo é conhecido como ordenação “in-place”.
Organizando Listas Python em Ordem Decrescente
Para organizar listas em ordem decrescente, configure o parâmetro reverse
para True
:
numeros = [25, 13, 6, 17, 9]
numeros.sort(reverse=True)
print(numeros)
# Saída: [25, 17, 13, 9, 6]
A lista agora está organizada em ordem decrescente.
Personalizando a Ordenação com o Parâmetro key
Aqui, usaremos o parâmetro key
para personalizar a forma de organização dos itens.
A função mod5()
, abaixo, retorna o resto da divisão de um número por 5:
def mod5(x):
return x % 5
Essa função será usada como chave.
Executando o código a seguir:
numeros = [25, 13, 6, 17, 9]
numeros.sort(key=mod5)
print(numeros)
# Saída: [25, 6, 17, 13, 9]
A ordenação agora é feita com base no resto da divisão por 5.
- Números com menor resto aparecem primeiro.
- Números com maior resto são os últimos.
Para verificar, observe o resto de cada número:
numeros = [25, 13, 6, 17, 9]
for num in numeros:
print(f"{num} deixa resto {num%5} quando dividido por 5")
# Saída
25 deixa resto 0 quando dividido por 5
13 deixa resto 3 quando dividido por 5
6 deixa resto 1 quando dividido por 5
17 deixa resto 2 quando dividido por 5
9 deixa resto 4 quando dividido por 5
A ordenação reflete o resto da divisão por 5.
Em vez de uma função separada, podemos usar funções lambda, que são funções anônimas de uma linha em Python. lambda args : expressão
retorna a expressão calculada com os argumentos fornecidos.
Reescrevendo a ordenação com uma expressão lambda:
numeros = [25, 13, 6, 17, 9]
numeros.sort(key=lambda x: x % 5)
print(numeros)
# Saída: [25, 6, 17, 13, 9]
Até agora, aprendemos a ordenar listas numéricas. Agora, vamos explorar a ordenação de listas de strings.
Ordenando Listas Python em Ordem Alfabética
Vamos usar exemplos inspirados em Harry Potter ✨ para ordenar uma lista de strings.
A lista estudantes
representa alunos de Hogwarts que serão organizados em ordem alfabética por seus nomes.
A ordenação padrão de strings em Python é alfabética.
estudantes = ["Harry", "Ron", "Hermione", "Draco", "Cedric"]
Imprimindo a lista após a ordenação:
estudantes.sort()
print(estudantes)
# Saída
['Cedric', 'Draco', 'Harry', 'Hermione', 'Ron']
Ordenação Alfabética Reversa
Para organizar strings em ordem alfabética inversa, configuramos reverse = True
:
estudantes.sort(reverse=True)
print(estudantes)
# Saída
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
A lista foi organizada na ordem inversa.
Personalizando a Ordenação com o Parâmetro key
Nesta seção, personalizamos a ordenação usando o parâmetro key
.
Considere a seguinte lista, casas
:
casas = [
{1: "Draco", "house": "Slytherin"},
{2: "Harry", "house": "Gryffindor"},
{3: "Cedric", "house": "Hufflepuff"}
]
A lista casas
é uma lista de dicionários, com pares chave-valor indicando o nome do aluno e sua respectiva casa.
A ordenação será feita alfabeticamente pelas casas dos alunos.
Definiremos o parâmetro key
para a casa dos alunos.
Para obter a casa de cada aluno, usamos a função retornaCasa()
:
def retornaCasa(aluno):
return aluno['house']
Essa função retorna a casa de cada aluno.
Agora, o método sort()
pode ser chamado:
casas.sort(key=retornaCasa)
A lista é ordenada pela casa, e não pelo nome, resultando em Grifinória, Lufa-Lufa e Sonserina em ordem alfabética.
print(casas)
# Saída
[{2: 'Harry', 'house': 'Gryffindor'},
{3: 'Cedric', 'house': 'Hufflepuff'},
{1: 'Draco', 'house': 'Slytherin'}]
Alternativamente, uma função lambda também pode ser usada. Esta função lambda retorna a casa para cada item da lista.
▶ Verifique:
casas.sort(key=lambda aluno: aluno["house"])
print(casas)
# Saída
[{2: 'Harry', 'house': 'Gryffindor'},
{3: 'Cedric', 'house': 'Hufflepuff'},
{1: 'Draco', 'house': 'Slytherin'}]
Nos exemplos anteriores, o método sort()
foi usado, alterando a lista original.
E se quisermos manter a lista original intacta, obtendo uma cópia ordenada?
A função sorted()
resolve essa necessidade.
A Sintaxe da Função sorted()
em Python
A função sorted()
recebe uma lista ou coleção como argumento, retornando uma nova lista ordenada, sem alterar a lista original.
A sintaxe de sorted()
em Python é:
<copia_ordenada> = sorted(<lista>, reverse = True | False, key = <função>)
Sua estrutura é muito similar à do método sort()
.
<lista>
: Qualquer objeto de lista Python válido (obrigatório).reverse
ekey
são parâmetros opcionais.
Observação: Ao contrário do método sort()
, que opera apenas em listas, a função sorted()
é aplicável a qualquer iterável em Python, como listas, strings e dicionários.
Ordenando Listas com sorted()
#1. numeros
é uma lista de números.
A função sorted()
recebe numeros
como argumento e o resultado é atribuído a numeros_ordenados1
.
numeros = [25, 13, 6, 17, 9]
numeros_ordenados1 = sorted(numeros)
print(numeros_ordenados1)
# Saída: [6, 9, 13, 17, 25]
Os números foram organizados em ordem crescente por padrão.
A lista original numeros
permanece inalterada:
print(numeros)
# Saída: [25, 13, 6, 17, 9]
#2. Configurando o parâmetro opcional reverse
para True
, obtemos numeros_ordenados2
.
A nova lista, numeros_ordenados2
, é organizada em ordem decrescente.
numeros_ordenados2 = sorted(numeros, reverse=True)
print(numeros_ordenados2)
# Saída: [25, 17, 13, 9, 6]
#3. Usando uma lista de strings.
A função sorted()
retorna uma nova lista, com os itens em ordem alfabética.
frutas = ['peras', 'morango', 'maçã', 'abacaxi', 'mirtilo']
frutas_ordenadas1 = sorted(frutas)
print(frutas_ordenadas1)
# Saída:
['abacaxi', 'maçã', 'mirtilo', 'morango', 'peras']
#4. Personalizando a ordenação com o parâmetro key
. Definindo a chave para len
, a lista é organizada com base no comprimento das strings.
Observação: A função len()
em Python aceita qualquer iterável e retorna seu comprimento.
As strings menores aparecem no início, e as maiores no final.
frutas = ['pera', 'morango', 'maçã', 'abacaxi', 'mirtilo']
frutas_ordenadas2 = sorted(frutas, key=len)
print(frutas_ordenadas2)
# Saída:
['pera', 'maçã', 'abacaxi', 'mirtilo', 'morango']
Na saída, “pera” é a menor string, e “morango” é a maior.
sort()
vs sorted()
Vamos resumir as diferenças entre sort()
e sorted()
.
Método .sort() |
Função sorted() |
Organiza a lista original (in-place). | Retorna uma nova lista ordenada. |
Funciona apenas com listas Python. | Funciona com iteráveis (listas, strings, coleções…). |
Não retorna nada (None ). |
Retorna uma cópia ordenada do iterável. |
Conclusão 👩🏫
Espero que este guia de ordenação de listas em Python tenha sido útil.
Revisando:
lista.sort(reverse = True | False, key = <função>)
para ordenar uma lista no lugar.sorted(lista, reverse = True | False, key = <função>)
para obter uma cópia ordenada da lista.
Com o conhecimento de ordenação de listas, explore também sobre listas de compreensão em Python. Ou ainda, aprenda a trabalhar com arquivos ou JSON em Python.
Experimente os exemplos usando o Compilador Python Online do etechpt.com.