Como usar a compreensão de lista em Python

Aprenda como usar compreensões de lista em Python. Escreva loops concisos, aplique filtros condicionais e crie matrizes com sintaxe visual limpa.

Experimente esta solução no Editor

Visão geral

A compreensão de listas é um dos recursos mais populares e icônicos do Python. Ele oferece uma sintaxe concisa, expressiva e altamente legível para criar uma nova lista a partir de um iterável existente (como uma lista, intervalo ou tupla). Ele permite que você substitua loops `for` de várias linhas e liste instruções de inicialização por uma única linha de código.

A sintaxe básica de uma compreensão de lista é `[expressão para item em iterável]`. Nos bastidores, essa sintaxe é altamente otimizada na implementação do Python, fazendo com que ela seja executada mais rápido do que os loops `for` padrão que acrescentam itens usando `.append()`. É ideal para aplicar transformações matemáticas ou modificar elementos.

As compreensões de lista também suportam filtragem condicional usando cláusulas `if`, permitindo incluir elementos seletivamente (por exemplo, `[x for x in data if x % 2 == 0]`). Embora incrivelmente poderosas, as compreensões de lista devem ser usadas com cuidado: se sua compreensão for altamente complexa ou aninhada, é melhor escrever loops padrão para manter a legibilidade.

Saída de código e execução

Este script demonstra compreensão básica de lista, filtragem com condições e transformação de valores de string.

list_comprehensions.py
Experimente no Editor
# 1. Traditional for-loop way to build a list
squares_loop = []
for x in range(1, 6):
    squares_loop.append(x**2)
print("Loop squares:", squares_loop)

# 2. List comprehension way (same outcome)
squares_comp = [x**2 for x in range(1, 6)]
print("Comp squares:", squares_comp)

# 3. Filtering elements with an 'if' clause (even numbers only)
evens = [n for n in range(1, 11) if n % 2 == 0]
print("Even numbers:", evens)

# 4. String modifications using comprehensions
names = ["alice", "bob", "charlie"]
caps = [name.capitalize() for name in names]
print("Capitalized:", caps)
Saída terminal
Loop squares: [1, 4, 9, 16, 25]
Comp squares: [1, 4, 9, 16, 25]
Even numbers: [2, 4, 6, 8, 10]
Capitalized: ['Alice', 'Bob', 'Charlie']

Implementação passo a passo

  • Identifique o corpo do loop e a expressão que você deseja capturar na lista.
  • Estruture a compreensão como [expressão para item em iterável].
  • Acrescente uma condição if opcional no final para filtrar elementos dinamicamente.

Perguntas frequentes

Posso usar instruções if-else dentro de uma compreensão de lista?

Sim! Coloque a cláusula if-else antes do loop for: [x if x > 0 else 0 for x in data].

Quais são as diferenças entre compreensões de lista e expressões geradoras?

As compreensões de lista usam colchetes e retornam uma lista completa instantaneamente. As expressões geradoras usam parênteses e retornam um objeto gerador lento, que economiza memória para grandes conjuntos de dados.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.