Como manipular uma tupla em Python
tuple()Além dos parênteses, também podemos criar uma tupla usando o construtor tuple():
1letras = tuple(["a", "b", "c"]) 2print(letras) 3 4# Saída: 5# ('a', 'b', 'c')
Esse formato costuma aparecer quando estamos convertendo dados, como no exemplo acima, em que convertemos do formato lista para tupla.
Vimos que as tuplas são imutáveis, então você não pode mudar, adicionar ou remover itens diretamente dela.
Mas, na prática, existem formas indiretas de lidar com essas situações, sempre partindo da mesma ideia: converter a tupla em lista, modificar a lista e então transformá-la novamente em tupla.
1tupla_de_frutas = ("maçã", "banana", "cereja") 2lista_de_frutas = list(tupla_de_frutas) 3 4lista_de_frutas[1]
1tupla_de_frutas = ("maçã", "banana", "cereja") 2lista_de_frutas = list(tupla_de_frutas) 3 4lista_de_frutas.append("laranja"
1primeira_tupla = ("maçã", "banana", "cereja") 2segunda_tupla = ("laranja",) 3 4primeira_tupla += segunda_tupla 5
Lembre-se: tuplas de um único item precisam de vírgula no final para diferenciá-las de strings.
Não é possível remover itens diretamente, mas podemos usar o mesmo truque de conversão para lista:
1tupla_de_frutas = ("maçã", "banana", "cereja") 2lista_de_frutas = list(tupla_de_frutas) 3 4lista_de_frutas.remove("maçã"
1tupla = ("maçã", "banana", "cereja") 2del tupla 3 4print(tupla) # erro: a tupla não existe mais 5
len()Assim como nas listas, para saber quantos itens existem na tupla, usamos a função len():
1numeros = (10, 20, 30) 2print(len(numeros)) 3 4# Saída:
count()O método count() retorna quantas vezes um valor aparece na tupla.
1tupla = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5) 2
index()O método index() retorna a posição da primeira ocorrência de um valor dentro da tupla.
1tupla = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5) 2
Se o valor não existir na tupla, o Python gera um erro.
1tupla = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5) 2
Copiar uma tupla é muito fácil, porque tuplas nunca mudam. Pense assim:
Quando estudamos listas, vimos que copiar uma lista podia dar problema se você fizesse da seguinte forma:
1nova_lista = lista_original
Caso isso seja feito, as duas variáveis ficam apontando para a mesma caixa de brinquedos. Ou seja: se a gente mudar um brinquedo em lista_original, o mesmo item seria alterado em nova_lista porque as duas são formas diferentes de chamar a mesma caixa. Isso é perigoso porque você pode mudar sem querer algo que não queria mudar.
Com tuplas, isso não acontece porque a caixa está fechada. Se você usa o igual, as duas variáveis também apontam para a mesma caixa:
1nova_tupla = tupla_original
Mas não existe problema nenhum nisso, porque:
Então usar a mesma caixa é totalmente seguro.
Podemos imaginar variáveis como etiquetas coladas em caixas. No computador, essas caixas são lugares na memória. Com listas, essa caixa pode mudar por dentro (porque a lista é mutável). Com tuplas, ela nunca muda (porque a tupla é imutável).
Por isso, copiar listas exige cuidado. Mas copiar tuplas é tranquilo, já que você nunca vai alterar nada sem querer.
1primeira_tupla = ("a", "b", "c") 2segunda_tupla = primeira_tupla 3 4print(segunda_tupla) 5
Se quiser garantir que está criando uma nova tupla explicitamente, também pode usar a função tuple():
1tupla_original = (10, 20, 30) 2nova_tupla = tuple(tupla_original) 3 4print(nova_tupla)
Por serem imutáveis, essas duas formas são equivalentes na prática.
Tuplas também podem ser unidas usando o operador + e criando uma nova tupla com todos os itens.
1primeira_tupla = ("a", "b", "c") 2segunda_tupla = (1, 2, 3) 3 4
Quando você usa o operador *, o Python cria uma nova tupla, colocando o conteúdo repetido várias vezes:
1frutas = ("maçã", "banana", "cereja") 2 3resultado = frutas * 2 4print(resultado)
Agora que você já entende como as tuplas funciona, fica bem mais claro por que elas são tão úteis.
No próximo artigo, vamos conhecer outro tipo de coleção que também tem suas próprias regras e vantagens: os conjuntos.