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
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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: O que é uma tupla: a lista que não muda.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
A lista que não muda. Tupla é uma coleção ordenada, como a lista, mas que NÃO pode ser alterada depois de criada.
Acessar pode, mudar não: o TypeError. Tupla de UM item exige vírgula: (7,) é tupla, mas (7) é só o número 7 entre parênteses.
Desempacotamento: a tupla que vira variáveis. Crie a tupla nascimento = (1998, 5, 20) e desempacote em ano, mes e dia.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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 é 5Uma 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çoO 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.