Compreensões de lista em Python – simplificando loops em uma linha

Em Pythoncompreensões de lista (list comprehensions) são uma maneira compacta e elegante de criar listas a partir de outras listas ou iteráveis. Elas permitem substituir loops longos por uma única linha de código, tornando seu programa mais limpo, legível e eficiente.

Neste guia, você vai aprender:

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 lista

  • elemento → cada item do iterável original

  • iteravel → 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]

if vem após o for, 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

AspectoLoop tradicionalList comprehension
Linhas de códigoVáriasUma única linha
LegibilidadeFácil, mas maiorMuito conciso e direto
PerformanceMenor em alguns casosGeralmente mais rápida
Uso de condiçõesNecessita if dentro do loopif dentro da própria expressão
Aplicação avançadaAninhamentos complexos podem confundirMantém a clareza, mesmo aninhada

7️⃣ Boas práticas

  1. Não exagere na complexidade – list comprehensions muito longas podem dificultar a leitura.

  2. Prefira loops tradicionais para múltiplos blocos complexos dentro da iteração.

  3. Sempre use nomes de variáveis claras.

  4. 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

  1. Crie uma list comprehension que gere os números de 1 a 20 elevados ao quadrado.

  2. Crie uma list comprehension que filtre os números pares de 1 a 50.

  3. Dada uma lista de palavras, crie uma list comprehension que transforme todas em maiúsculas.

  4. Dado um dicionário com nomes e idades, crie uma list comprehension que liste apenas as pessoas maiores de 21 anos.

  5. 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, stringsdicionários e até matrizes

Use list comprehensions sempre que quiser escrever código limpo, eficiente e Pythonico.

Comentários

Postagens mais visitadas deste blog

Laços de Repetição em Python: Conceitos e Exemplos Práticos

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Como Instalar o Xamarin com C#: Passo a Passo Completo