Módulo 11 - Tuplas, dicionários e conjuntos

O que é uma tupla: a lista que não muda

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

Velocidade

O que você vai aprender

  • Criar tuplas com parênteses e explicar o que as diferencia das listas.
  • Acessar itens de uma tupla por índice, como já faz com listas.
  • Prever e ler o TypeError que aparece ao tentar alterar uma tupla.
  • Desempacotar uma tupla em variáveis com uma linha de código.

A lista que não muda

No módulo 10 você aprendeu a lista, a coleção que cresce, encolhe e troca itens conforme o programa roda. A tupla é a irmã disciplinada dela: também guarda vários valores em ordem, também aceita acesso por índice, mas fecha a porta depois de criada. Nenhum item entra, nenhum sai, nenhum troca de valor. O nome vem do inglês tuple, e a marca registrada dela são os parênteses no lugar dos colchetes.

ponto = (3, 5)
cores_da_bandeira = ("verde", "amarelo", "azul", "branco")

print(ponto)
print(type(ponto))

# Saída:
# (3, 5)
# <class 'tuple'>

Duas tuplas: um par de coordenadas e as cores da bandeira. O type confirma: tuple.

Por que alguém iria querer uma coleção travada? Porque nem todo dado deveria mudar. As coordenadas de um ponto no mapa, o par dia e mês de um aniversário, os nomes dos meses do ano: são informações que formam um bloco fechado. Guardar isso numa lista funciona, mas deixa a porta aberta para um erro seu, dez linhas depois, trocar um valor sem querer. A tupla transforma esse acidente em erro visível na hora.

Acessar pode, mudar não: o TypeError

Ler uma tupla é idêntico a ler uma lista. O primeiro item mora no índice 0, o segundo no 1, e o índice negativo conta de trás para a frente. Até o len funciona igual. Tudo o que você treinou com listas no módulo passado vale aqui, desde que seja leitura.

cores_da_bandeira = ("verde", "amarelo", "azul", "branco")

print(cores_da_bandeira[0])
print(cores_da_bandeira[-1])
print(len(cores_da_bandeira))

# Saída:
# verde
# branco
# 4

Índice, índice negativo e len: a leitura da tupla é igualzinha à da lista.

A diferença aparece na primeira tentativa de escrita. Troque um item, e o Python interrompe o programa com um TypeError explicando, em bom inglês técnico, que tupla não aceita atribuição de item. Rode o exemplo abaixo no Playground para ver o erro de perto; conhecer a mensagem agora evita o susto depois.

cores_da_bandeira = ("verde", "amarelo", "azul", "branco")
cores_da_bandeira[0] = "roxo"

# TypeError: 'tuple' object does not support item assignment
# Tradução: o objeto tupla não aceita atribuição de item.

A tentativa de mudança derruba o programa na hora, apontando a linha exata.

Esse erro é a tupla fazendo o trabalho dela. Imagine um programa de entregas em que as coordenadas do depósito são fixas. Se elas morarem numa lista, qualquer linha distraída pode sobrescrevê-las e mandar o entregador para o bairro errado, sem nenhum aviso. Na tupla, a linha distraída explode com TypeError no primeiro teste, e você corrige antes de qualquer estrago. Erro cedo e barulhento vale mais que erro silencioso.

Desempacotamento: a tupla que vira variáveis

A tupla tem um truque de conveniência que você vai usar o resto da trilha: o desempacotamento. Em vez de acessar ponto[0] e ponto[1] em duas linhas, você declara duas variáveis de uma vez e o Python distribui os valores na ordem. O código fica mais curto e, principalmente, mais legível: x e y contam uma história que ponto[0] e ponto[1] escondem.

ponto = (3, 5)
x, y = ponto

print(f"A posição horizontal é {x} e a vertical é {y}")

# Saída:
# A posição horizontal é 3 e a vertical é 5

Uma linha, duas variáveis: x recebe o primeiro valor da tupla, y recebe o segundo.

A única regra é o pareamento: o número de variáveis do lado esquerdo precisa bater com o número de itens da tupla. Duas variáveis para uma tupla de três itens geram ValueError, com a mensagem too many values to unpack, ou seja, valores demais para desempacotar. Como sempre, o Python avisa a linha e o motivo.

data_de_aniversario = (14, "março")
dia, mes = data_de_aniversario

print(f"O aniversário é dia {dia} de {mes}")

# Saída:
# O aniversário é dia 14 de março

O desempacotamento também funciona com tipos misturados: um número e um texto.

Teste rápido

O que acontece ao executar cores = ("azul", "verde") e depois cores[0] = "roxo"?

Perguntas frequentes

Se a tupla não muda, para que ela serve?
Para proteger dados que formam um registro fixo: coordenadas, datas, configurações. Guardar esses valores numa tupla transforma qualquer alteração acidental em erro visível na hora, em vez de deixar o dado errado passar despercebido pelo programa inteiro.
Posso misturar tipos dentro de uma tupla?
Pode, exatamente como na lista. A tupla ("Ana", 21, True) guarda um texto, um número inteiro e um booleano juntos. Aliás, esse uso de tipos misturados num registro fixo é um dos empregos mais comuns dela.
Como faço uma tupla com um item só?
Com a vírgula: (7,) é uma tupla de um item. Sem a vírgula, (7) é apenas o número 7 entre parênteses de matemática, e type((7)) devolve int, não tuple. Essa vírgula solitária pega muito iniciante, então vale rodar o teste no Playground uma vez.
Dá para converter tupla em lista e vice-versa?
Dá, com as funções list() e tuple(). Se você precisa de uma versão modificável de uma tupla, list(minha_tupla) cria uma lista nova com os mesmos itens; a tupla original continua intacta. O caminho inverso, tuple(minha_lista), congela uma cópia da lista.
Tupla aceita for, igual à lista?
Aceita. Tudo que é leitura funciona: for item in tupla, len, in, índice, índice negativo e fatia. O que a tupla bloqueia é só a escrita: nada de append, remove ou atribuição em índice. O for que você aprendeu no módulo 9 percorre tuplas sem mudar uma letra.
O desempacotamento só funciona com tuplas?
Não, listas também desempacotam: a, b = [1, 2] funciona. Mas o par tupla e desempacotamento é o mais comum na prática, porque registros fixos de tamanho conhecido são justamente o terreno da tupla. Você verá muito esse padrão quando funções devolverem mais de um valor, no módulo 13.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.