Menu

Tuplas em Python: sequências imutáveis, desempacotamento e named tuples

Quando usar uma tupla em vez de uma lista — imutabilidade, desempacotamento, named tuples e os cenários para os quais as tuplas foram feitas.

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):

main.py
Output
Click Run to see the output here.

Uma tupla com um item precisa de vírgula no final, senão o Python trata os parênteses como agrupamento:

main.py
Output
Click Run to see the output here.

E para tuplas vazias, use ():

main.py
Output
Click Run to see the output here.

Imutabilidade, na prática

Tente mudar uma tupla e o Python te para:

main.py
Output
Click Run to see the output here.

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.

  1. Segurança. Uma tupla que você passa para uma função não pode ser modificada pelas suas costas.
  2. Hashabilidade. Tuplas de valores imutáveis podem ser usadas como chaves de dicionário ou membros de set; listas não.
  3. Intenção. Uma tupla diz "isto é um registro de formato fixo". ponto = (3, 4) comunica "duas coordenadas" mais claramente do que ponto = [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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

Você pode usar * para coletar "o resto":

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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:

main.py
Output
Click Run to see the output here.

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.

Aprenda a programar com o Coddy

COMEÇAR