Pular para o conteúdo
</>RoByte

Buscar cursos e aulas

Aulas do curso

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

Código no GitHub

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.