Vídeo em breve
Por enquanto, esta aula está disponível só em texto — o vídeo entra assim que ficar pronto.
Listas e dicionários
Tuplas e conjuntos
Duas estruturas relevantes: tuplas (listas que não mudam) e conjuntos (coleções sem itens repetidos). · 13 min
Você já conhece listas e dicionários — as estruturas mais usadas no dia a dia. Faltam duas: tuplas (para dados que não devem mudar) e conjuntos (para coleções sem repetição). Ambas aparecem com frequência em código Python real, então vale conhecer.
Tuplas: como uma lista, mas imutável
Tupla se escreve com parênteses em vez de colchetes, e depois de criada, não pode ser alterada:
coordenada = (10.5, -3.2)
cor_rgb = (255, 0, 128)
print(coordenada[0]) # 10.5 — acessa por índice, igual lista
coordenada[0] = 20 # ERRO: TypeError, tuplas não podem ser modificadas
Dica
Use tupla quando o significado dos dados é “isso é um pacote fixo de
valores que sempre andam juntos” — uma coordenada (x, y), uma cor
(r, g, b), um par (nome, idade). Se você vai adicionar/remover itens
depois, é lista; se o conjunto de valores é fechado, é tupla.
Desempacotando tuplas
Um uso muito comum é “desempacotar” os valores direto em variáveis:
coordenada = (10.5, -3.2)
x, y = coordenada
print(x) # 10.5
print(y) # -3.2
Isso também explica por que for chave, valor in dicionario.items(): (da
aula anterior) funciona: .items() devolve uma lista de tuplas
(chave, valor), e o for desempacota cada uma automaticamente.
pessoa = {"nome": "Ada", "idade": 28}
for item in pessoa.items():
print(item) # ('nome', 'Ada'), depois ('idade', 28) — são tuplas
Conjuntos: coleções sem repetição
Um conjunto (set) guarda valores únicos, sem ordem garantida:
tags = {"python", "iniciante", "python", "logica"}
print(tags) # {'python', 'iniciante', 'logica'} — a repetição sumiu sozinha
numeros = set([1, 2, 2, 3, 3, 3])
print(numeros) # {1, 2, 3}
Atenção
{} vazio cria um dicionário, não um conjunto — para um conjunto vazio,
use set(). É uma das poucas pegadinhas de sintaxe do Python.
Operações de conjunto
python_devs = {"Ada", "Grace", "Alan"}
js_devs = {"Grace", "Bruno"}
print(python_devs | js_devs) # união: {'Ada', 'Grace', 'Alan', 'Bruno'}
print(python_devs & js_devs) # interseção: {'Grace'} (nos dois)
print(python_devs - js_devs) # diferença: {'Ada', 'Alan'} (só no primeiro)
Dica
Um uso muito prático de conjunto: tirar duplicatas de uma lista rapidamente
com lista_unica = list(set(lista_com_repeticoes)). Lembre que a ordem
original não é preservada.
Resumo: qual estrutura usar?
| Estrutura | Ordenada? | Permite repetição? | Pode mudar? | Acesso |
|---|---|---|---|---|
list |
sim | sim | sim | por índice |
tuple |
sim | sim | não | por índice |
set |
não | não | sim | não tem índice |
dict |
sim (desde Python 3.7) | chaves não, valores sim | sim | por chave |
Exercícios
Exercício
1. Aquecimento. Crie uma tupla ponto = (4, 7) e desempacote em duas
variáveis x e y. Imprima f"Ponto em x={x}, y={y}".
Exercício
2. Removendo duplicatas. Dada visitantes = ["ana", "bruno", "ana", "carla", "bruno", "ana"],
use set() para descobrir quantos visitantes únicos houve, e
imprima esse número junto com o total de visitas (len(visitantes)).
Exercício
3. Desafio. Duas turmas fizeram uma prova:
turma_a = {"Ada", "Grace", "Alan", "Rosa"} e
turma_b = {"Alan", "Rosa", "Beto"}. Usando operações de conjunto,
descubra e imprima: quem fez as duas provas, quem fez só a da turma A, e
o total de alunos únicos entre as duas turmas.