Pular para o conteúdo
2ª unidade · atualLição 2 de 4~12 min de leitura17 fichas para praticar

Tuplas

A tupla é uma lista que não muda. Guarda vários valores em ordem, com índice começando em 0, mas depois de criada ninguém troca, acrescenta ou tira nada. Ela é escrita com parênteses: (8.5, 7.0, 6.5).

Nesta lição0 de 5 vistas
  1. 1Lista ou tupla?
  2. 2A tupla não muda
  3. 3Empacotar e desempacotar
  4. 4enumerate e zip
  5. 5Função que devolve vários valores
Lista: pode mudar
notas = [8.5, 7.0, 6.5]
8.5[0]7.0[1]6.5[2]

notas[0] → 8.5

Tupla: fica fixa
notas = (8.5, 7.0, 6.5)
8.5[0]7.0[1]6.5[2]

notas[0] → 8.5

Acessar é igual nas duas. A diferença aparece quando se tenta mudar.

1

Lista ou tupla?

Quase tudo igual, menos mudar
ListaTupla
Escreve com[7, 5, 9](7, 5, 9)
Acessar v[0], fatia, len, in, forpodepode
Trocar v[0] = 1podeerro
append, insert, del, pop, removepodeerro
count, indexpodepode
Um valor só[5](5,)
Use paravalores que vão mudar: o que vai sendo lidovalores que andam juntos e ficam fixos: (nome, idade), (x, y)

Antes de rodar, preveja

Com pessoa = ('Ana', 28, 'Petrolina'). Se der erro, escreva erro.

8 perguntas
  1. pessoa[0]
  2. pessoa[-1]
  3. len(pessoa)
  4. pessoa[0:2]
  5. 28 in pessoa
  6. pessoa.index('Petrolina')
  7. pessoa + (1,)
  8. type((5))
2

A tupla não muda

Mas o que está dentro dela pode

Trocar um valor: erro

exemplo.py
t = ('Python', 10, [1, 2])
t[0] = 'Java'

No Thonny, aparece TypeError: 'tuple' object does not support item assignment.

Mudar a lista que está dentro: funciona

exemplo.py
t = ('Python', 10, [1, 2])
t[2].append(3)
print(t)

A tupla continua guardando a mesma lista na posição 2. Quem mudou foi a lista, por dentro, e lista pode mudar.

3

Empacotar e desempacotar

Uma variável para cada valor

Desempacotar

exemplo.py
pessoa = ('Ana Maria', 28, 'Petrolina')
nome, idade, cidade = pessoa
print(cidade)

Cada variável pega o valor da mesma posição. A quantidade tem que ser igual dos dois lados.

Trocar sem auxiliar

exemplo.py
a = 3
b = 5
a, b = b, a
print(a, b)

O Python monta primeiro a tupla da direita, (b, a), com os valores antigos, e só depois distribui. Com a = b e depois b = a, os dois ficariam iguais.

Trocar a e bentradas: 3, 5
a = int(input())
b = int(input())
a, b = b, a
print(a, b)
aint3nasceu agora

Linha 1a = int(input()) → 3 (o usuário digitou "3")

3
1 / 5
4

enumerate e zip

Tuplas entregues ao for, e o mesmo com while

Os dois entregam tuplas para o for, por isso o for tem duas variáveis. Cada um faz o mesmo que um while com índice.

enumerate: posição e valor

exemplo.py
cidades = ['Petrolina', 'Juazeiro']
for i, cidade in enumerate(cidades):
print(i, cidade)
é o mesmo que, com while:
exemplo.py
cidades = ['Petrolina', 'Juazeiro']
i = 0
while i < len(cidades):
print(i, cidades[i])
i = i + 1

zip: duas listas lado a lado

exemplo.py
alunos = ['Ana', 'Bia']
notas = [8.5, 7.0]
for aluno, nota in zip(alunos, notas):
print(aluno, nota)
é o mesmo que, com while:
exemplo.py
alunos = ['Ana', 'Bia']
notas = [8.5, 7.0]
i = 0
while i < len(alunos):
print(alunos[i], notas[i])
i = i + 1
5

Função que devolve vários valores

return a, b devolve uma tupla
menor_maior.py
def menor_maior(a, b):
if a < b:
return a, b
return b, a
x, y = menor_maior(9, 4)
print(x, y)

return a, b devolve uma tupla. Quem chama desempacota direto em duas variáveis. É o que pede a questão das estatísticas: devolver (menor, maior, soma) de uma vez.

Erros que mais aparecem na prova

5 erros
Tentar mudar a tupla.

t[0] = 'x', t.append(3) e del t[1] dão erro. Se os valores vão mudar, a estrutura certa é a lista. A tupla serve para o que fica fixo: coordenadas, os dados de uma pessoa, os dias da semana.

Esquecer a vírgula na tupla de um valor.

(5) é só o número 5 entre parênteses. A tupla de um elemento é (5,). Quem faz a tupla é a vírgula: t = 5, também é uma tupla.

Quantidade errada ao desempacotar.

nome, idade = ('Ana', 28, 'Petrolina') dá erro: são 2 variáveis para 3 valores. Tem que ser uma variável para cada valor, na mesma ordem.

Usar index sem conferir antes.

cores.index('roxo') para o programa com erro quando o roxo não está lá. Confira com if 'roxo' in cores: antes de pedir a posição.

Confundir enumerate com range.

No for i, cidade in enumerate(cidades), o i é a posição e a cidade é o valor. Com uma variável só, cada volta recebe a dupla inteira (0, 'Petrolina').

Próxima lição: Funções ›

Complemento, não atalho. O laboratório ajuda a entender a lógica. Para fixar de verdade, escreva do zero no Thonny ou no seu editor.