Tuplas em Python
Uma tupla (tuple) é uma sequência de elementos que se assemelha bastante a uma lista, exceto pelo fato de que a tupla é um tipo imutável (immutable). Portanto, não podemos adicionar ou remover elementos em uma tupla nem modificá-la.
Para criar uma tupla, utilizam-se parênteses, onde os valores são inseridos separados por vírgulas:
tom = ("Tom", 23)
print(tom) # ("Tom", 23)
Também é possível definir uma tupla apenas listando os valores separados por vírgula, sem o uso de parênteses:
tom = "Tom", 23
print(tom) # ("Tom", 23)
Se a tupla contiver apenas um elemento, é necessário colocar uma vírgula após o único elemento:
tom = ("Tom",)
Para criar uma tupla a partir de outro conjunto de elementos, como uma lista, podemos passar a lista para a função tuple()
data = ["Tom", 37, "Google"]
tom = tuple(data)
print(tom) # ("Tom", 37, "Google")
A função incorporada len()
tom = ("Tom", 37, "Google")
print(len(tom)) # 3
Acessando Elementos de uma Tupla
O acesso a elementos em uma tupla ocorre da mesma forma que em uma lista, por meio de índices. A indexação começa em zero para elementos contados do início e em -1 para elementos contados a partir do fim:
tom = ("Tom", 37, "Google", "software developer")
print(tom[0]) # Tom
print(tom[1]) # 37
print(tom[-1]) # software developer
Como a tupla é um tipo imutável, não podemos modificar seus elementos. Portanto, a seguinte operação não é permitida:
tom[1] = "Tim"
Podemos, no entanto, desempacotar uma tupla em variáveis separadas:
name, age, company, position = ("Tom", 37, "Google", "software developer")
print(name) # Tom
print(age) # 37
print(company) # Google
print(position) # software developer
Subtuplas
Assim como nas listas, é possível obter uma parte da tupla na forma de uma subtupla:
tom = ("Tom", 37, "Google", "software developer")
# Obter subtupla do índice 1 ao 2 (não incluindo o índice 3)
print(tom[1:3]) # (37, "Google")
# Obter subtupla do índice 0 ao 2 (não incluindo o índice 3)
print(tom[:3]) # ("Tom", 37, "Google")
# Obter subtupla do índice 1 até o último elemento
print(tom[1:]) # (37, "Google", "software developer")
Tupla como Parâmetro e Retorno de Funções
É particularmente útil usar tuplas quando precisamos retornar múltiplos valores de uma função. Na verdade, quando uma função retorna vários valores, ela retorna uma tupla:
def get_user():
name = "Tom"
age = 22
company = "Google"
return name, age, company
user = get_user()
print(user) # ("Tom", 22, "Google")
Ao passar uma tupla para uma função, podemos usar o operador *
def print_person(name, age, company):
print(f"Name: {name} Age: {age} Company: {company}")
tom = ("Tom", 22)
print_person(*tom, "Microsoft") # Name: Tom Age: 22 Company: Microsoft
bob = ("Bob", 41, "Apple")
print_person(*bob) # Name: Bob Age: 41 Company: Apple
Iteração
Podemos iterar sobre uma tupla usando os loops for
while
Usando for
tom = ("Tom", 22, "Google")
for item in tom:
print(item)
Usando while
tom = ("Tom", 22, "Google")
i = 0
while i < len(tom):
print(tom[i])
i += 1
Verificando a Existência de um Elemento
s Assim como nas listas, é possível verificar se um elemento está presente em uma tupla usando a expressão element in tuple
user = ("Tom", 22, "Google")
name = "Tom"
if name in user:
print("O usuário se chama Tom")
else:
print("O usuário tem outro nome")