Compreensões Python: compreensões de lista, ditado e conjunto

Escreva um Python mais limpo e rápido. Lista mestre, dicionário e compreensão de conjuntos com exemplos práticos, condições de filtragem e loops aninhados.

Experimente no Editor

Visão geral

As compreensões são um dos recursos mais adorados do Python, oferecendo uma sintaxe concisa e altamente legível para a criação de novas coleções (listas, dicionários e conjuntos) a partir de iteráveis existentes. Em vez de escrever loops `for` de várias linhas e anexar itens manualmente, as compreensões permitem que você execute a mesma transformação, filtragem e atribuição em uma única e expressiva linha de código.

As compreensões de lista são a variante mais comum, estruturadas como `[expressão para item em condição if iterável]`. Nos bastidores, o Python otimiza as compreensões para serem executadas em velocidade próxima à C, muitas vezes superando os loops manuais `for` equivalentes porque o loop é tratado pelo interpretador subjacente. Eles são ideais para transformações rápidas, como converter uma lista de temperaturas Celsius em Fahrenheit ou extrair chaves específicas de uma lista de registros de usuários.

Além das listas, o Python oferece suporte à compreensão de Dicionário e Conjunto. Uma compreensão de dicionário, definida com chaves e pares de valores-chave (por exemplo, `{chave: valor para x em iterável}`), é altamente útil para inverter pares de mapeamento ou analisar metadados. As compreensões de conjunto geram coleções exclusivas, removendo automaticamente as duplicatas. Embora as compreensões sejam incrivelmente poderosas, os desenvolvedores devem evitar complicá-las; se uma compreensão requer loops aninhados ou condições complexas, um loop `for` tradicional geralmente é mais fácil de ler e manter.

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

Demonstra transformações de lista, filtragem condicional e criação de um dicionário a partir de entradas de mapeamento.

comprehensions.py
Experimente no Editor
numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
Saída terminal
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

Implementação passo a passo

  • Filtrando valores vazios ou dados inválidos dos logs
  • Mapeando cargas de API em mapeamentos de dados de valor-chave
  • Formatando rapidamente linhas do banco de dados em listas simples

Perguntas frequentes

As compreensões são mais rápidas que os loops normais?

Sim, na maioria dos casos eles são mais rápidos porque a iteração é tratada por código C otimizado dentro do interpretador Python.

Devo sempre usar compreensões?

A legibilidade do código é a prioridade do python. Se a compreensão tiver lógica aninhada ou tiver mais de uma ou duas linhas, é preferível um loop tradicional.

Tópicos Relacionados

Recursos Python recomendados

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