Tuplas em Python: Uma Visão Geral
Aprenda a acessar elementos de tuplas em Python usando indexação positiva, negativa, fatiamento e acesso aninhado, com exemplos executáveis.
Esta página explica como ler dados de uma tupla Python. Você aprenderá indexação positiva, indexação negativa, fatiamento, acesso a tuplas aninhadas, o operador in e a função integrada len(). Você também verá quando as tuplas são a escolha certa em vez de listas.
O Que É uma Tupla?
Uma tupla é uma sequência de valores ordenada e imutável. "Ordenada" significa que cada elemento tem uma posição fixa que pode ser endereçada por índice. "Imutável" significa que você não pode alterar, adicionar ou remover elementos após a criação — é isso que torna as tuplas úteis quando a integridade dos dados importa.
# Create a tuple with parentheses
colors = ("red", "green", "blue")
# The built-in tuple() function works too
digits = tuple([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])Para tudo que você pode fazer ao criar uma tupla pela primeira vez, consulte o capítulo Python Tuples.
Acessando Elementos por Índice
Assim como as listas, as tuplas usam indexação baseada em zero: o primeiro elemento está no índice 0, o segundo em 1, e assim por diante.
Index: 0 1 2
| | |
colors = ("red", "green", "blue")Sintaxe: tuple_name[index]
Acessar um índice que não existe gera um IndexError:
colors = ("red", "green", "blue")
print(colors[5]) # IndexError: tuple index out of rangeIndexação Negativa
Python permite contar a partir do final da tupla usando números negativos. O índice -1 é o último elemento, -2 é o penúltimo, e assim por diante.
Index: 0 1 2
Neg idx: -3 -2 -1
| | |
colors = ("red", "green", "blue")A indexação negativa é especialmente conveniente quando você precisa do último item sem chamar len().
Fatiando uma Tupla
Um fatiamento extrai uma sub-tupla. A sintaxe é tuple_name[start:stop], onde start é inclusivo e stop é exclusivo.
fruits = ("apple", "banana", "cherry", "date", "elderberry")
print(fruits[1:3]) # ('banana', 'cherry') — index 1 up to (not including) 3
print(fruits[:3]) # ('apple', 'banana', 'cherry') — from beginning to index 3
print(fruits[2:]) # ('cherry', 'date', 'elderberry') — from index 2 to end
print(fruits[:]) # entire tuple (useful for shallow copy)Você pode adicionar um valor de passo como terceiro argumento: tuple_name[start:stop:step].
numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(numbers[::2]) # (0, 2, 4, 6, 8) — every second element
print(numbers[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) — reversedUm fatiamento sempre retorna uma nova tupla — a original nunca é modificada.
Obtendo o Comprimento com len()
len() retorna o número de elementos em uma tupla.
fruits = ("apple", "banana", "cherry", "date", "elderberry")
print(len(fruits)) # 5Isso é útil para evitar IndexError ou para iterar com um range():
for i in range(len(fruits)):
print(i, fruits[i])
# 0 apple
# 1 banana
# 2 cherry
# 3 date
# 4 elderberryVerificando Membros com in
O operador in testa se um valor existe em uma tupla, retornando True ou False.
fruits = ("apple", "banana", "cherry")
print("banana" in fruits) # True
print("mango" in fruits) # False
print("mango" not in fruits) # TrueUse in em vez de capturar uma exceção quando você simplesmente precisa saber se um valor está presente.
Acessando Tuplas Aninhadas
Tuplas podem conter outras tuplas. Para acessar um elemento dentro de uma tupla aninhada, encadeie os colchetes de índice.
matrix = ((1, 2), (3, 4), (5, 6))
print(matrix[0]) # (1, 2)
print(matrix[0][1]) # 2 — row 0, column 1
print(matrix[2][0]) # 5 — row 2, column 0A mesma técnica funciona para aninhamentos mistos, como uma tupla de strings e números:
record = ("Alice", 30, ("Python", "SQL"))
print(record[0]) # Alice
print(record[2]) # ('Python', 'SQL')
print(record[2][0]) # PythonOperações com Tuplas
Embora você não possa alterar uma tupla, pode combinar tuplas para produzir novas.
Concatenando Tuplas
Use + para juntar duas ou mais tuplas:
Repetindo Tuplas
Use * para repetir uma tupla um determinado número de vezes:
Métodos Úteis de Tuplas
As tuplas têm dois métodos integrados que ajudam a ler dados:
| Método | O que retorna |
|---|---|
tuple.count(value) | Número de vezes que value aparece na tupla |
tuple.index(value) | Índice da primeira ocorrência de value |
colors = ("red", "green", "blue", "red", "red")
print(colors.count("red")) # 3
print(colors.index("green")) # 1Para uma referência completa, consulte o capítulo Tuple Methods.
Quando Usar uma Tupla em Vez de uma Lista
| Situação | Tupla | Lista |
|---|---|---|
| Os dados não devem mudar (coordenadas, valores RGB, linhas de banco de dados) | Sim | Não |
| Usado como chave de dicionário | Sim | Não — listas não são hasháveis |
| Leve vantagem de memória/velocidade para dados somente leitura | Sim | Não |
| Precisa adicionar, remover ou ordenar | Não | Sim |
Se você precisar modificar uma tupla, consulte Update Tuples para a solução comum de converter para uma lista e de volta.
Tópicos Relacionados
- Python Tuples — criando tuplas, tuplas de um único item, construtor
tuple() - Unpack Tuples — atribua elementos de tupla a variáveis em uma linha
- Loop Tuples — itere sobre uma tupla com
forewhile - Update Tuples — soluções alternativas para alterar o conteúdo de uma tupla
- Join Tuples — concatenação e técnica com
sum() - Tuple Methods —
count()eindex()em profundidade - Python Lists — a alternativa mutável às tuplas