Percorrendo listas com for

Aprenda a visitar cada item de uma lista automaticamente.

Nas lições anteriores de loops, vimos como o loop for é especialista em percorrer sequências, como letras de uma palavra ou números em um intervalo.

Agora que já sabemos o que são listas, vamos juntar esses dois conceitos! O loop for é a ferramenta perfeita para percorrer listas, nos permitindo visitar cada item, do primeiro ao último, de forma totalmente automática.

Na programação, essa ação de passar por cada item de uma coleção é chamada de iteração.

Como funciona o for com listas?

Pense no for com listas como um leitor de código de barras no caixa do supermercado. Você passa as compras na esteira e a máquina faz o mesmo processo para cada produto individualmente: lê o preço, adiciona à conta final e passa para o próximo item, até que a esteira fique vazia.

A sintaxe é idêntica ao que já aprendemos:

for item_temporario in nome_da_lista:
   # Código a ser executado para cada item (deve estar indentado!)

Exemplos Práticos

Exemplo 1: Enviando convites personalizados

Imagine que você tem uma lista com nomes de convidados e quer exibir uma mensagem de boas-vindas personalizada para cada um deles.

convidados = ["Ana", "Bruno", "Carlos", "Diana"]

# Para cada 'nome' que está dentro da lista 'convidados', execute:
for nome in convidados:
   print("Olá, " + nome + "! Seu convite foi confirmado.")

O resultado no console será:

Olá, Ana! Seu convite foi confirmado.
Olá, Bruno! Seu convite foi confirmado.
Olá, Carlos! Seu convite foi confirmado.
Olá, Diana! Seu convite foi confirmado.

Nota didática: A variável nome foi criada por nós na linha do for. A cada volta do loop, ela assume o valor de um elemento da lista: na primeira volta vale "Ana", na segunda vale "Bruno", e assim por diante.

Exemplo 2: Calculando o total da compra

E se tivermos uma lista com os preços de vários produtos e quisermos calcular a soma total deles? Nós usamos uma variável acumuladora fora do loop.

precos = [12.50, 5.00, 20.00, 8.50]
soma_total = 0.0

# Passa por cada preço da lista
for preco in precos:
   soma_total = soma_total + preco  # Acumula o valor na variável

print("O valor total das compras é: R$", soma_total)  # Mostra: R$ 46.0

Exemplo 3: Filtrando itens por preço

Também podemos colocar condicionais if dentro do loop para analisar e tomar decisões individuais sobre cada item da lista. Vamos percorrer uma lista de produtos e mostrar apenas os produtos acima de R$ 30,00.

precos = [12.50, 45.00, 20.00, 99.90, 8.50]

print("Produtos acima de R$ 30,00")

for preco in precos:
   if preco > 30.0:
       print("Preço: ", preco)

O resultado no console mostrará apenas as opções que atendem à regra:

Produtos acima de R$ 30,00:
Preço: 45.0
Preço: 99.9

Exemplo 4: Encontrar o maior número

Dada uma lista de inteiros positivos, queremos percorrer a lista para encontrar o maior número. Assim como no exercício da soma, vamos criar uma variável para nos auxiliar. Esta variável vai ir guardando o maior valor encontrado até o momento. Vamos iniciar ela com 0.

numeros = [12, 9, 3, 44, 16]
maior = 0

for numero in numeros:
   if numero > maior:
       maior = numero

print("Maior número: ", maior)

O que acontece neste loop?

  • maior começa com 0.
  • Na primeira iteração, numero vale 12. 12 é maior que 0, logo maior recebe o valor 12.
  • Na segunda iteração, numero vale 9. 9 não é maior que 12, então maior permanece com o valor 12.
  • Na terceira iteração, numero vale 3. 3 não é maior que 12, então maior permanece com o valor 12.
  • Na quarta iteração, numero vale 44. 44 é maior que 12, então maior recebe com o valor 44.
  • Na quinta e última iteração, numero vale 16. 16 não é maior que 44, então maior permanece com o valor 44.
  • O programa mostra - "Maior número: 44".

E se quisessemos encontrar o menor número? Poderíamos fazer algo parecido. Porém, a variável de controle não pode começar em 0, pois nenhum número seria menor que ele! Neste caso, vamos supor que a nossa lista de positivos é limitada ao valor 1000. Neste caso, se iniciarmos a variável de controle em 1000, qualquer valor menor que 1000 que aparecer na lista será capaz de atualizar a variável.

numeros = [100, 89, 3, 1000, 65]
menor = 1000

for numero in numeros:
   if numero < menor:
       menor = numero

print("Menor número: ", menor)

O que acontece neste loop?

  • menor começa com 1000.
  • Na primeira iteração, numero vale 100. 100 é menor que 1000, logo menor recebe o valor 100.
  • Na segunda iteração, numero vale 89. 89 é menor que 100, então menor recebe com o valor 89.
  • Na terceira iteração, numero vale 3. 3 é menor que 89, então menor recebe o valor 3.
  • Na quarta iteração, numero vale 1000. 1000 não é menor que 89, então menor permanece com o valor 3.
  • Na quinta e última iteração, numero vale 65. 65 não é maior que 3, então menor permanece com o valor 3.
  • O promgrama mostra - "Menor número: 3".

Dica: sempre que precisar achar o MAIOR número em uma lista, inicie a variável de controle com o MENOR número possível. Sempre que precisar encontrar o MENOR número em uma lista, inicie a variável de controle com o MAIOR número possível.

O que aprendemos nesta lição

Nesta lição, você aprendeu que:

  • Percorrer ou iterar uma lista significa visitar e processar cada um de seus elementos.
  • O loop for é a estrutura mais limpa e indicada para iterar sobre listas no Python.
  • A variável temporária declarada no for assume automaticamente o valor de um item da lista a cada volta.
  • Podemos combinar loops sobre listas com acumuladores (variáveis fora do loop) e condicionais if (dentro do loop) para realizar cálculos e filtros complexos de forma muito simples.