Compreensões de lista em Python – simplificando loops em uma linha
Neste guia, você vai aprender:
O que são list comprehensions
Compreensões com condições (
if
)Boas práticas e exemplos do dia a dia
Vamos lá! 🚀
1️⃣ O que são compreensões de lista?
Uma list comprehension é uma forma concisa de criar listas a partir de outra sequência.
Exemplo tradicional usando for
:
numeros = [1, 2, 3, 4, 5]
quadrados = []
for numero in numeros:
quadrados.append(numero ** 2)
print(quadrados)
Saída:
[1, 4, 9, 16, 25]
Mesmo exemplo usando list comprehension:
numeros = [1, 2, 3, 4, 5]
quadrados = [numero ** 2 for numero in numeros]
print(quadrados)
Saída:
[1, 4, 9, 16, 25]
Perceba que conseguimos reduzir várias linhas em apenas uma, mantendo a clareza do código.
2️⃣ Sintaxe básica
A estrutura básica de uma list comprehension é:
[nova_expressao for elemento in iteravel]
nova_expressao
→ valor que será armazenado na nova listaelemento
→ cada item do iterável originaliteravel
→ lista, string, range, etc.
Exemplo:
numeros = range(1, 6)
dobro = [n * 2 for n in numeros]
print(dobro)
Saída:
[2, 4, 6, 8, 10]
3️⃣ Compreensões com condição (if
)
Você pode filtrar elementos usando uma condição:
numeros = range(10)
pares = [n for n in numeros if n % 2 == 0]
print(pares)
Saída:
[0, 2, 4, 6, 8]
O
if
vem após ofor
, e apenas os elementos que satisfazem a condição entram na nova lista.
Com condição com transformação
numeros = range(10)
pares_dobrados = [n*2 for n in numeros if n % 2 == 0]
print(pares_dobrados)
Saída:
[0, 4, 8, 12, 16]
4️⃣ Compreensões aninhadas
Você pode combinar loops dentro de list comprehensions, útil para listas de listas ou matrizes:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
todos_numeros = [n for linha in matriz for n in linha]
print(todos_numeros)
Saída:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
O primeiro
for
percorre a linha, o segundo percorre os elementos da linha.
5️⃣ Iterando strings e dicionários
a) Strings
palavra = "Python"
letras_maiusculas = [letra.upper() for letra in palavra]
print(letras_maiusculas)
Saída:
['P', 'Y', 'T', 'H', 'O', 'N']
b) Dicionários
idades = {"Ana": 25, "Bruno": 30, "Carla": 18}
maiores = [nome for nome, idade in idades.items() if idade >= 18]
print(maiores)
Saída:
['Ana', 'Bruno', 'Carla']
6️⃣ List comprehensions versus loops tradicionais
Aspecto | Loop tradicional | List comprehension |
---|---|---|
Linhas de código | Várias | Uma única linha |
Legibilidade | Fácil, mas maior | Muito conciso e direto |
Performance | Menor em alguns casos | Geralmente mais rápida |
Uso de condições | Necessita if dentro do loop | if dentro da própria expressão |
Aplicação avançada | Aninhamentos complexos podem confundir | Mantém a clareza, mesmo aninhada |
7️⃣ Boas práticas
Não exagere na complexidade – list comprehensions muito longas podem dificultar a leitura.
Prefira loops tradicionais para múltiplos blocos complexos dentro da iteração.
Sempre use nomes de variáveis claras.
Combinado com funções, list comprehensions ficam ainda mais poderosas:
def quadrado(n):
return n ** 2
numeros = range(5)
resultados = [quadrado(n) for n in numeros]
print(resultados)
8️⃣ Exercícios práticos
Crie uma list comprehension que gere os números de 1 a 20 elevados ao quadrado.
Crie uma list comprehension que filtre os números pares de 1 a 50.
Dada uma lista de palavras, crie uma list comprehension que transforme todas em maiúsculas.
Dado um dicionário com nomes e idades, crie uma list comprehension que liste apenas as pessoas maiores de 21 anos.
Dada uma matriz 3x3, use list comprehension para criar uma lista com todos os elementos multiplicados por 2.
9️⃣ Conclusão
As compreensões de lista são uma ferramenta poderosa em Python que permite:
Criar listas de forma concisa e elegante
Substituir loops tradicionais com uma linha de código
Filtrar e transformar dados com condições e expressões
Iterar sobre listas, strings, dicionários e até matrizes
Use list comprehensions sempre que quiser escrever código limpo, eficiente e Pythonico.
Comentários
Postar um comentário