Pular para o conteúdo

A primeira escola especializada em tecnologia do Alto Solimões, com corpo técnico formado na área.

Módulo 3: Estruturas de Controle

List Comprehension

Crie listas em uma linha só

O que é list comprehension?

List comprehension é o jeito pythonico de criar listas. Em vez de escrever um loop inteiro com append, você faz tudo em uma linha só. A ideia é simples: a expressao vem primeiro, depois o for, é um if opcional no final para filtrar.

Se você já sabe usar for e append, list comprehension e apenas um atalho mais limpo para mesma coisa.

Comprehension básica

A expressao vem primeiro, depois o for:

quadrados: list[int] = [x ** 2 for x in range(1, 6)]
print(quadrados) # → [1, 4, 9, 16, 25]
# Convertendo temperaturas
celsius: list[float] = [0, 20, 37, 100]
fahrenheit: list[float] = [(c * 9/5) + 32 for c in celsius]
print(fahrenheit) # → [32.0, 68.0, 98.6, 212.0]

Comprehension com filtro

O if no final filtra quem entra na lista:

números: list[int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares: list[int] = [x for x in números if x % 2 == 0]
print(pares) # → [2, 4, 6, 8, 10]

Comprehension com if/else (ternário)

Quando o if/else vem antes do for, você escolhe entre dois valores:

valores: list[int] = [10, -3, 5, -7, 8]
positivos: list[int] = [x if x > 0 else 0 for x in valores]
print(positivos) # → [10, 0, 5, 0, 8]

For tradicional vs comprehension

O mesmo resultado, duas formas de escrever:

# For tradicional (4 linhas)
resultado: list[int] = []
for x in range(1, 11):
if x % 2 == 0:
resultado.append(x ** 2)

# List comprehension (1 linha)
resultado: list[int] = [x ** 2 for x in range(1, 11) if x % 2 == 0]
print(resultado) # → [4, 16, 36, 64, 100]

Dict e set comprehension

A mesma lógica funciona com {} para criar dicionarios e sets:

# Dict comprehension - chave: valor
palavras: list[str] = ["python", "e", "incrivel"]
tamanhos: dict[str, int] = {p: len(p) for p in palavras}
print(tamanhos) # → {'python': 6, 'e': 1, 'incrivel': 8}
# Set comprehension - valores unicos
números: list[int] = [1, 2, 2, 3, 3, 3, 4]
unicos: set[int] = {x for x in números}
print(unicos) # → {1, 2, 3, 4}

Exercício prático

Dada uma lista de palavras, use list comprehension para:

  1. Criar uma lista só com palavras que tem mais de 4 letras
  2. Criar uma lista com todas as palavras em maiusculo
  3. Criar um dicionario {palavra: tamanho}
palavras: list[str] = ["sol", "computador", "lua", "programação", "py", "dados"]

# 1. [p for p in palavras if len(p) > 4]

# 2. [p.upper() for p in palavras]

# 3. {p: len(p) for p in palavras}

Referências

Testa o que você leu

4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.

Pergunta 1 de 4
Qual é a sintaxe correta de list comprehension?