Numerar itens e parear duas listas
O número do enumerate não fica guardado na lista. Sem outro começo, ele é 0 e vale só aquela volta. zip anda duas listas no mesmo passo e para quando a mais curta acaba. for percorria uma fila já pronta. break e continue não numeram nem pareiam. Aqui o laço não é cortado.
names tem lida e depois guest. enumerate(names) dá, em cada volta, um número e o nome. O primeiro número é 0, porque nenhum outro início foi dito. print escreve os dois na mesma linha.
names = ["lida", "guest"]
for number, name in enumerate(names):
print(number, name)
Você vê 0 lida, depois 1 guest. O 0 e o 1 não voltam para dentro de names. names continua sendo duas cadeias.
Comece a conta em 1
Passe 1 como segundo argumento. enumerate(names, 1) escreve 1 lida, depois 2 guest. A ordem dos nomes não se mexe. Só a conta muda. Omita o segundo argumento e você volta ao 0.
zip pega duas listas e um item de cada, na mesma ordem. O primeiro nome é lida e a primeira bebida é water. A volta seguinte é guest com tea. Não há número, a menos que você chame enumerate também. Este programa não chama.
names = ["lida", "guest"]
drinks = ["water", "tea"]
for name, drink in zip(names, drinks):
print(name, drink)
Você vê lida water, depois guest tea. O par segue a ordem da lista, não o sentido do nome. Troque as bebidas e os pares trocam junto.
A lista mais curta acaba o laço
Deixe em drinks só water. zip começa na frente das duas listas, então a primeira volta é lida com water. Não há segunda bebida. zip não inventa uma e não dá erro. guest não é visitado, e o laço termina.
names = ["lida", "guest"]
drinks = ["water"]
for name, drink in zip(names, drinks):
print(name, drink)
A única linha é lida water. guest ainda está em names. Não havia bebida ao lado, então este laço não chegou a esse nome.
Quatro chamadas, e o que cada uma escreve. As duas linhas de enumerate só diferem no início. As duas de zip só diferem no tamanho de drinks.
📊 O que cada chamada escreve
| Chamada | O que você vê |
|---|---|
| enumerate(names) | 0 com lida, depois 1 com guest |
| enumerate(names, 1) | 1 com lida, depois 2 com guest |
| zip, drinks é water depois tea | lida com water, depois guest com tea |
| zip, drinks só tem water | lida com water, depois o laço acaba |
A página seguinte é sobre uma função: um trabalho com nome, que você pode chamar depois. Ela não numera uma lista nem pareia duas listas.
Calcule antes de executar
- names é lida, depois guest. Que linhas enumerate(names) escreve?
- Você passa o início 1. Qual é a primeira linha?
- drinks é water, depois tea. O que zip escreve em segundo?
- drinks só tem water. guest é escrito? O programa para com um erro?
Onde os pares entortam
- Esperar o início em 1 quando nenhum início foi passado
- Achar que o número é gravado de volta na lista
- Parear lida com tea porque tea parece combinar
- Esperar guest quando drinks tem um só item
- Tomar a parada cedo por uma falha
enumerate percorre uma lista e põe um número. Sem início, o número é 0 e depois 1: 0 com lida, depois 1 com guest. Passe 1 e os mesmos nomes saem como 1 e 2.
zip percorre duas listas no mesmo passo. Comprimentos iguais dão lida com water, depois guest com tea. Se drinks só tem water, escreve-se lida water e o laço acaba. guest fica em names, sem visita.
A página seguinte dá nome a um trabalho, para você poder chamá-lo.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo