Python Coleções Básico
Tuplas e desempacotamento
Tuplas são sequências imutáveis em Python, ou seja, depois de criadas não podem ser alteradas. Elas são definidas com parênteses e vírgulas, e são úteis para agrupar dados relacionados que não devem mudar, como coordenadas ou informações de configuração.
O desempacotamento permite atribuir os elementos de uma tupla a variáveis individuais de forma concisa. Por exemplo, x, y = (1, 2) coloca 1 em x e 2 em y. Isso funciona para qualquer iterável, não apenas tuplas.
O operador * pode ser usado para capturar múltiplos elementos em uma lista durante o desempacotamento. Por exemplo, a, *b = (1, 2, 3) faz a = 1 e b = [2, 3]. Isso é chamado de desempacotamento estendido.
Uma aplicação clássica é a troca de variáveis sem variável temporária: a, b = b, a. Como as tuplas são imutáveis, essa operação cria uma nova tupla à direita e a desempacota à esquerda, trocando os valores de forma elegante e segura.
Pontos-chave
- Tuplas são imutáveis: não é possível modificar, adicionar ou remover elementos após a criação.
- O desempacotamento atribui elementos de um iterável a variáveis em uma única linha.
- O operador
*captura múltiplos elementos em uma lista durante o desempacotamento. - A troca de variáveis
a, b = b, aé feita sem variável auxiliar usando tuplas. - Tuplas podem ser usadas como chaves de dicionário, pois são hashable (imutáveis).
def main():
# Criando uma tupla
ponto = (3, 4)
print(f"Ponto: {ponto}")
# Desempacotamento simples
x, y = ponto
print(f"x = {x}, y = {y}")
# Tentativa de modificação (erro)
try:
ponto[0] = 10
except TypeError as e:
print(f"Erro ao modificar tupla: {e}")
# Desempacotamento com *resto
numeros = (1, 2, 3, 4, 5)
primeiro, *meio, ultimo = numeros
print(f"Primeiro: {primeiro}, Meio: {meio}, Último: {ultimo}")
# Troca de variáveis
a, b = 10, 20
print(f"Antes: a = {a}, b = {b}")
a, b = b, a
print(f"Depois: a = {a}, b = {b}")
if __name__ == "__main__":
main()