Tuplas em Python
Tuplas podem ser vistas como coleções de campos, com um significado que depende da ordem em que esses campos aparecem.
A descrição acima é um pouco abstrata, então, como de costume, é melhor tentarmos entendê-la por meio de um exemplo.
Imagine que você precise armazenar dados de latitude e longitude de várias cidades. Algumas das opções para armazenar esses dados são:
-
Criar duas variáveis, uma para armazenar o valor da latitude e outra para armazenar o valor da longitude.
-
Criar uma lista de tamanho dois, onde o primeiro índice é a latitude e o segundo é a longitude.
Um problema comum às duas opções acima é que a latitude e longitude de uma cidade não muda, e ambas opções que listamos permitem que esses dados sejam alterados. Idealmente, gostaríamos de atribuir os valores de latitude e longitude de uma cidade e ter certeza de que esses valores não serão alterados. Tuplas oferecem a solução perfeita nesse caso.
A seguir, explicaremos como criar a manipular tuplas em Python.
Como criar uma tupla em Python
A sintaxe de criação de tuplas é (…, …, …)
, ou …, …
, conforme mostrado nos exemplos abaixo.
# Exemplo de criação de tuplas.
tupla_vazia = () # Também é possível fazer: tupla_vazia = tuple()
print("Tupla vazia: ", tupla_vazia)
coordenada_xy = (10, 20)
print("Exemplo de tupla: ", coordenada_xy)
print("Tipo de uma tupla: ", type(coordenada))
latlon_bh = (-19.8157, -43.9542)
print("Outro exemplo de criação de tupla: ", latlon_bh)
Tupla vazia: () Exemplo de tupla: (10, 20) Tipo de uma tupla: <class 'tuple'> Outro exemplo de criação de tupla: (-19.8157, -43.9542)
Extraindo elementos de uma tupla
No exemplo acima, criamos uma coordenada para armazenar pontos das dimensões x e y. Podemos fazer o caminho inverso e extrair elementos individuais ("desempacotar") uma tupla:
x, y = coordenada_xy
print("x =", x)
print("y =", y)
x = 10 y = 20
Como dissemos, tuplas não podem ser modificadas. Veja o que acontece quando tentamos modificar uma tupla:
coordenada_xy[0] = 15
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-216-94c38671ad7b> in <module>() ----> 1 coordenada_xy[0] = 15 TypeError: 'tuple' object does not support item assignment
Um uso interessante de tuplas é a troca dos valores de duas variáveis. Essa operação é comumente conhecida como swap. Vejamos um exemplo:
x = 10
y = 20
# Swap errado.
print("x e y antes do swap: ", x, y)
x = y
y = x
print("x e y depois do swap (errado): ", x, y)
x e y antes do swap: 10 20 x e y depois do swap (errado): 20 20
Você consegue identificar o problema no código acima?
Vejamos agora formas corretas de fazer o swap do conteúdo de duas variáveis.
x = 10
y = 20
# Swap tradicional.
print("x e y antes do swap: ", x, y)
temp = x
x = y
y = temp
print("x e y depois do swap: ", x, y)
x = 10
y = 20
# Swap com tuplas.
print("x e y antes do swap: ", x, y)
x, y = y, x
print("x e y depois do swap: ", x, y)
x e y antes do swap (tradicional): 10 20 x e y depois do swap (tradicional): 20 10 x e y antes do swap (usando tuplas): 10 20 x e y depois do swap (usando tuplas): 20 10
Playground
# Use este espaço para praticar o que você aprendeu nesta seção.
# Basta digitar o código no espaço abaixo e clicar 'run'.