Uma tupla é uma lista que você não pode mudar
Tuplas e listas parecem similares num relance — as duas são sequências ordenadas, as duas suportam indexação e iteração — mas uma diferença crítica muda tudo: tuplas são imutáveis. Uma vez que você cria uma tupla, não pode adicionar, remover ou trocar um item.
Você escreve tuplas com parênteses (ou às vezes sem):
Uma tupla com um item precisa de vírgula no final, senão o Python trata os parênteses como agrupamento:
E para tuplas vazias, use ():
Imutabilidade, na prática
Tente mudar uma tupla e o Python te para:
Você pode ler de uma tupla livremente — indexação, fatiamento, iteração, in — só não pode modificar. Se precisa de uma tupla diferente, você cria uma nova.
Por que ia querer algo que você não pode mudar?
Imutabilidade parece uma limitação, mas muitas vezes é a característica que você quer.
- Segurança. Uma tupla que você passa para uma função não pode ser modificada pelas suas costas.
- Hashabilidade. Tuplas de valores imutáveis podem ser usadas como chaves de dicionário ou membros de set; listas não.
- Intenção. Uma tupla diz "isto é um registro de formato fixo".
ponto = (3, 4)comunica "duas coordenadas" mais claramente do queponto = [3, 4].
Tuplas brilham para coisas como:
- Coordenadas:
(x, y),(lat, lon) - Cores RGB:
(255, 128, 0) - Registros:
(nome, email, data_cadastro) - Retornar vários valores de uma função
Desempacotamento
Tuplas e a sintaxe de desempacotamento são feitas uma para a outra:
A vírgula à esquerda é o que faz o desempacotamento. O Python vê dois nomes e uma tupla com dois valores, e amarra os pares.
Isso aparece em todo lugar no Python idiomático:
Você pode usar * para coletar "o resto":
Prático quando você só se importa com o primeiro e o último elementos.
Tuplas como chaves de dicionário
Como tuplas são hashable (contanto que o conteúdo também seja), você pode usar como chaves de dict. Listas não conseguem:
Esse padrão — indexar por uma composição de valores — é surpreendentemente útil. Pense: "a pontuação do usuário X no dia Y" ou "a melhor rota de A para B".
Tuplas para múltiplos valores de retorno
Uma função que precisa retornar mais de uma coisa geralmente retorna uma tupla:
O próprio divmod() embutido do Python faz exatamente isso. A atribuição por desestruturação no código que chama faz ler naturalmente.
Named tuples, quando a posição não basta
Quando suas tuplas crescem para além de dois ou três itens, lembrar qual posição significa o quê fica chato. O collections.namedtuple resolve:
Agora os itens da tupla têm nomes. Continua imutável, continua sendo tupla (então desempacotamento e indexação funcionam), mas o padrão de acesso é muito mais amigável. Para qualquer coisa mais complexa, tem dataclasses — vamos conhecer no capítulo de classes.
Tupla vs lista: um guia rápido de decisão
- Formato fixo, cada posição tem significado → tupla.
- Uma coleção que pode crescer ou encolher → lista.
- Retornar vários valores de uma função → tupla.
- Precisa de chave de dict ou membro de set → tupla (lista não funciona).
- Vai mexer nela → lista (tupla não deixa).
Seguindo em frente
Tuplas cobrem uma ponta do espectro: fixas, pequenas, estruturadas. A seguir: sets, que cobrem um trabalho completamente diferente — checagem rápida de pertinência e unicidade.
Perguntas frequentes
O que é uma tupla em Python?
Uma tupla é uma sequência ordenada e imutável — como uma lista, mas uma vez criada você não pode adicionar, remover ou mudar seus itens. Você escreve tuplas com parênteses: ponto = (3, 4).
Qual a diferença entre uma tupla e uma lista?
As duas são sequências ordenadas. Listas são mutáveis — você pode mudar depois de criar — enquanto tuplas são imutáveis. Tuplas são geralmente usadas para coleções pequenas de valores que pertencem juntos como um único "registro", como coordenadas ou vários valores de retorno de uma função.
Quando devo usar uma tupla?
Use uma tupla quando tem um registro de tamanho fixo onde cada posição tem um significado — coordenadas, cores RGB, uma linha de banco de dados. Também, use tuplas como chaves de dicionário ou membros de set, já que listas não podem ir nesses lugares. Para tudo mais em que a coleção pode crescer ou encolher, listas são o padrão.