// aula 02 · Python · Estruturas de Dados · Mundo 3

Tuplas em Python


O que é uma tupla?

🔒 Uma lista que não pode ser alterada

O Guanabara explica que tupla é como uma lista com cadeado — depois de criada, seus itens não podem ser modificados. Use quando os dados precisam ser protegidos contra alterações, como coordenadas, datas ou registros fixos.

✅ Características

  • Ordenada — mantém a posição dos itens
  • Imutável — não pode ser alterada
  • Permite duplicatas
  • Mais rápida que lista (menos memória)

📌 Sintaxe

  • Criada com parênteses: ( )
  • Ou sem parênteses: a, b, c
  • Tupla de 1 elemento precisa de vírgula: (1,)
  • Índice idêntico à lista: começa em 0

Visualizando uma tupla

"SP"
0
"RJ"
1
"MG"
2
"RS"
3
"BA"
4

🔒 Os valores não podem ser trocados após a criação

# Criando tuplas
estados = ("SP", "RJ", "MG", "RS", "BA")
ponto   = (10.5, -3.2)       # coordenada x, y
pessoa  = "Lucilia", 21, "SP"  # sem parênteses também funciona
unico   = ("só um",)           # tupla de 1 item — vírgula obrigatória!

print(estados[0])   # → SP
print(len(estados)) # → 5

# Tentativa de alterar — gera TypeError!
# estados[0] = "PR"  → TypeError: 'tuple' object does not support item assignment

A imutabilidade na prática

🔒 Por que usar imutável?

Quando você quer garantir que os dados não vão ser alterados por acidente no código. Exemplos clássicos: coordenadas geográficas (lat, lon), data de nascimento, configurações do sistema, retorno de múltiplos valores de uma função.

# Tupla como retorno de função
def minmax(lista):
    return min(lista), max(lista)  # retorna tupla

menor, maior = minmax([3, 1, 9, 5])
print(f"Menor: {menor}, Maior: {maior}")  # → Menor: 1, Maior: 9

# Desempacotamento de tupla
pessoa = ("Lucilia", 21, "São Paulo")
nome, idade, cidade = pessoa
print(f"{nome} tem {idade} anos e mora em {cidade}")

Métodos disponíveis (só 2!)

count(valor)

Conta quantas vezes o valor aparece na tupla.

t = (1, 2, 2, 3, 2)
t.count(2) # → 3
index(valor)

Retorna o índice da primeira ocorrência do valor.

t = ("a", "b", "c")
t.index("b") # → 1

🔍 Mas posso usar outras operações!

Mesmo sem métodos de alteração, tuplas aceitam: len(), in / not in, fatiamento [:], iteração com for, min(), max() e sum().

t = (5, 3, 8, 1, 9, 2)

print(len(t))      # → 6
print(min(t))      # → 1
print(max(t))      # → 9
print(sum(t))      # → 28
print(8 in t)      # → True
print(t[2:5])      # → (8, 1, 9)

Lista vs Tupla — quando usar cada uma?

📋 Lista [ ]
🔒 Tupla ( )
Dados que vão mudar
Dados fixos, constantes
Adicionar/remover itens
Proteger dados de modificação
Carrinho de compras
Coordenadas GPS
Lista de tarefas
Dias da semana
Mais métodos disponíveis
Mais rápida e leve