Carregando...

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.

Numerar cada nome desde 0

python
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.

Parear cada nome com uma bebida

python
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.

Parar quando a bebida acaba

python
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

  1. names é lida, depois guest. Que linhas enumerate(names) escreve?
  2. Você passa o início 1. Qual é a primeira linha?
  3. drinks é water, depois tea. O que zip escreve em segundo?
  4. 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

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 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