Tuplas (Tuples)¶

Uma tupla em Python é uma sequência imutável de itens, ou seja, uma vez criada ela não pode ser alterada.

O nome 'tupla' vem de dupla, tripla, quádrupla, ..., t-upla ou simplesmente tupla.

Um exemplo típico de tupla é o par ordenado (uma dupla) utilizado para identificar um ponto num plano cartesiano, a exemplo do par (4, 3) na imagem abaixo.

cartesiano2d

ou a tripla (3, 4, 5) que representa o ponto o ponto P no plano cartesiano tridimensional abaixo.

cartesiano3d

As tuplas em Python são identificadas por uma sequência de itens delimitadas por parênteses.

In [ ]:
# Criar uma tupla
t = (3, 4, 5)

print(t)

A mesma tupla acima pode ser criada utilizando o recurso de empacotamento de tupla, conforme abaixo. Note que não foi utilizado parênteses para delimitar os valores que compõem a tupla, apesar de estarem subentendidos.

In [ ]:
t = 3, 4, 5

print(t)
In [ ]:
# Obter o tamanho (número de elementos) de uma tupla
len(t)
In [ ]:
# Uma tupla pode ter valores de tipos distintos, assim como valores repetidos
t = ('João', 45, 8.15, 'Fortaleza', 45)
print(t)

A exemplo do que ocorre com strings, é possível utilizar o operador "+" para concatenar (justapor) tuplas.

In [ ]:
reais = (2.3, 3.14, 5.19)
t = reais + ("abc", "def") + (1, 2)
print(t)

Note que a variável 't' passa a denotar a nova tupla resultante da concatenação, mas que as tuplas originais permanecem inalteradas

In [ ]:
print(reais)

Indexação de elementos¶

A exemplo de strings, as tuplas são coleções ordenadas (a ordem dos elementos é importante) e indexadas (cada elemento pode ser referenciado por um índice). O uso de índices permite operar facilmente com pedaços de uma tupla, comforme exemplo abaixo.

tupla

Note que os elementos da tupla podem ser referenciados por dois índices, um positivo iniciando em zero outro negativa iniciando em -1.

In [ ]:
t = ('João', 45, 8.15, 'Fortaleza', 45)
In [ ]:
# Pegar o 1º elemento da tupla
t[0]
In [ ]:
# Pegar o último elemento da tupla
t[-1]
In [ ]:
# Pegar o 3º e o 4º elementos da tupla (o segundo índice é exclusivo)
t[2:4]
In [ ]:
# Pegar um pedaço da tupla a partir do 2º elemento até o final
t[1:]
In [ ]:
# Pegar um pedaço a partir do início até o 3º elemento (índice 2)
t[:3]
In [ ]:
# Pegar todos os elementos de uma tupla, exceto o último
t[:-1]
In [ ]:
# Pegar todos os elementos de uma tupla em ordem inversa
t[::-1]
# Como o primeiro índice foi omitido, é assumido o início da tupla
# Como o segundo índice foi omitido, é assumido o final da tupla
# Como o incremento é -1, os valores são pegos em ordem invertida

Percorrimento de tuplas¶

O comando 'for' pode ser utilizado para percorrer toda a tupla ou parte dela, conforme exemplificado abaixo:

In [ ]:
# Percorrer toda a tupla, elemento a elemento
for item in t:
    print(item)
In [ ]:
# Percorrer um pedaço da tupla (todos os elementos, exceto os últimos dois)
for item in t[:-2]:
    print(item)

Comparando tuplas¶

A comparação entre duas tuplas é feita elemento a elemento, da esquerda para a direita

In [ ]:
# As tuplas abaixo são diferente pois o segundo elemento da primeira difere do segundo elemento da segunda
(78, 44, 33) != (78, 45, 33, 2)
In [ ]:
# A primeira tupla é maior que a segunda pois o segundo elemento da primeira 
# é maior que o segundo elemento da segunda
(78, 45) > (78, 44, 51)

Operador de pertinência¶

Em Python há o operador in que permite verificar se um elemento pertence a uma sequência.

In [ ]:
# Verificar se um determinado valor está na tupla
t = ('João', 45, 8.15, 'Fortaleza', 45)
8.16 in t
In [ ]:
# Verificar se um determinado valor não está na tupla
'Maria' not in t

Métodos sobre tuplas¶

Tuplas são objetos em Python, de forma que há métodos que possibilitam interagir com as tuplas:

In [ ]:
# Obter o índice de um dados valor da tupla
t = ('João', 45, 8.15, 'Fortaleza', 45)
t.index('Fortaleza')
In [ ]:
# Contar o número de vezes que um determinado objeto ocorre numa tupla
t.count(45)

Desempacotando tuplas¶

Em Python há um recurso de desempacotamento de tuplas que possibilita extrair valores de uma tupla e atribuí-los a diferentes variáveis.

In [ ]:
# Criando uma tupla
t = ('João', 45, 8.15, 'Fortaleza')
print(t)
In [ ]:
# Desenpacotando a tupla: os valores da tupla t são atribuídos às correspondentes variáveis
nome, idade, melhor_saldo, cidade = t
print(nome)
print(idade)
print(melhor_saldo)
print(cidade)
In [ ]:
# O primeiro e o último valores da tupla t são atribuídos às variáveis nome e cidade, respectivamente.
# Os valore intermediários da tupla são atribuídos à variável dados
nome, *dados, cidade = t
print(nome)
print(dados)
print(cidade)

Quando usar tuplas¶

Tuplas são utilizadas quando a imutabilidade é necessária ou, de forma inversa, quando sabemos que seus valores não serão alterado. Em outras situações é necessário utilizar listas.

É importante também considerar que a operação com tuplas tem melhor desempenho quando comparada com listas, tanto do ponto de vista de espaço (memória) como tempo (processamento).