Módulo 10 - Listas em Python
Percorrendo listas com for: visitar, somar e comparar
11 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Percorrer uma lista com for item in lista, visitando cada item na ordem.
- Exibir itens numerados usando enumerate, sem gambiarras de contador.
- Somar todos os valores e achar o maior usando acumulador e comparação.
- Conhecer sum() e max(), as versões prontas que o Python oferece.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Percorrendo listas com for: visitar, somar e comparar.
Os objetivos desta aula. Percorrer uma lista com for item in lista, visitando cada item na ordem. Exibir itens numerados usando enumerate, sem gambiarras de contador. Somar todos os valores e achar o maior usando acumulador e comparação. Conhecer sum() e max(), as versões prontas que o Python oferece.
Veja o essencial, parte por parte.
for item in lista: o par perfeito. for item in lista visita cada item da lista, na ordem, um por volta do loop.
Numerando com enumerate, com calma. Só precisa dos ITENS? for item in lista. É o caso de longe mais comum.
Somar tudo e achar o maior: na mão e com atalho. Hora de pagar a promessa da aula 1: a média das notas.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
for item in lista: o par perfeito
No módulo 9 o for repetia ações com range, contando números. A vocação verdadeira dele, porém, é esta: percorrer coleções. A escrita for fruta in frutas se lê como português, para cada fruta na lista de frutas, e faz exatamente o que diz: a cada volta do loop, a variável fruta recebe o próximo item, do primeiro ao último, sem você administrar índice nenhum. Sem range, sem len, sem risco de IndexError.
frutas = ["maçã", "banana", "laranja"]
for fruta in frutas:
print(f"Comprar: {fruta}")
# Saída:
# Comprar: maçã
# Comprar: banana
# Comprar: laranjaO for visita cada item na ordem. A variável fruta é criada pelo próprio loop e muda a cada volta.
O nome da variável do loop é escolha sua, e a boa prática é o singular do nome da lista: fruta em frutas, nota em notas, convidado em convidados. O código vira uma frase que qualquer pessoa lê. E tudo que você aprendeu de for continua valendo aqui: o corpo indentado executa uma vez por item, e dentro dele cabem if, contas e até outros appends em outra lista.
Numerando com enumerate, com calma
Cedo ou tarde aparece a necessidade de mostrar a POSIÇÃO junto com o item: uma lista de compras numerada, um ranking, um menu de opções. O for sozinho entrega só o item; a posição fica escondida. Para esses casos o Python oferece a função enumerate, que embrulha a lista e entrega, a cada volta, um par: a posição e o item. A escrita usa duas variáveis antes do in, separadas por vírgula. Vamos por partes, porque a primeira vista assusta um pouco.
compras = ["arroz", "feijão", "café"]
for i, item in enumerate(compras):
print(f"{i} - {item}")
# Saída:
# 0 - arroz
# 1 - feijão
# 2 - caféenumerate entrega posição e item juntos: i recebe o índice, item recebe o valor. Duas variáveis, uma vírgula.
Leia a linha do for devagar: para cada PAR posição-e-item na lista enumerada, guarde a posição em i e o item em item. Só isso. Repare que a numeração saiu 0, 1, 2, porque enumerate usa os índices reais da lista, e índice começa em zero, como você bem sabe. Só que pessoas contam do 1: ninguém quer ver item 0 - arroz numa lista de compras. A solução é o ajuste start=1, que manda o enumerate começar a contagem do 1, sem mudar a lista em nada.
compras = ["arroz", "feijão", "café"]
for i, item in enumerate(compras, start=1):
print(f"{i} - {item}")
# Saída:
# 1 - arroz
# 2 - feijão
# 3 - caféCom start=1, a numeração fica amigável para humanos. Este é o formato do menu da prática, na aula 7.
Somar tudo e achar o maior: na mão e com atalho
Hora de pagar a promessa da aula 1: a média das notas. O ingrediente é o padrão acumulador, parente do que você viu no módulo do while: uma variável total começa em zero e, a cada volta do for, recebe ela mesma mais a nota da vez. No fim do loop, total guarda a soma de tudo, e a média é a soma dividida pelo len. Para achar a MAIOR nota, a mesma ideia com uma comparação: guarde a primeira nota como campeã provisória e, a cada volta, se a nota da vez for maior, ela assume o posto.
notas = [7.5, 8.0, 6.5, 9.0, 7.0]
total = 0
for nota in notas:
total = total + nota # acumula a soma
maior = notas[0] # a primeira é a campeã provisória
for nota in notas:
if nota > maior:
maior = nota # destronada: a nota da vez é maior
print(f"Média: {total / len(notas)}") # Saída: Média: 7.6
print(f"Maior nota: {maior}") # Saída: Maior nota: 9.0Os dois clássicos na mão: acumulador para a soma, campeão provisório para o maior. Leia linha a linha.
Agora, a honestidade de sempre: o Python já tem isso pronto. sum(notas) devolve a soma, max(notas) o maior, min(notas) o menor. Uma linha cada. E então, por que a aula fez você suar na versão manual? Porque quem só conhece o atalho não sabe o que fazer quando o problema muda de forma: some só as notas acima de 7, ache o maior nome em ordem alfabética com desempate, conte quantos passaram. O sum não resolve essas variações; o padrão acumulador resolve todas. Você aprendeu o motor; o atalho é o câmbio automático.
notas = [7.5, 8.0, 6.5, 9.0, 7.0]
print(sum(notas)) # Saída: 38.0
print(max(notas)) # Saída: 9.0
print(min(notas)) # Saída: 6.5
print(sum(notas) / len(notas)) # Saída: 7.6 (a média, em uma linha)As versões prontas: sum, max e min. Use sem culpa agora que você sabe o que elas fazem por dentro.
Teste rápido
O que imprime este código? valores = [3, 8, 5] total = 0 for v in valores: total = total + v print(total)
Perguntas frequentes
- Posso alterar os itens da lista de dentro do for?
- Alterar a variável do loop (como fruta) não muda a lista: ela é uma cópia do item da vez. Para alterar de verdade, use o índice via enumerate: for i, nota in enumerate(notas): notas[i] = nota + 1. E evite adicionar ou remover itens da lista enquanto a percorre; isso bagunça a visita.
- sum() funciona com lista de textos?
- Não: sum é para números e gera TypeError com strings. Para juntar textos de uma lista numa frase, o Python usa o método join, como ", ".join(frutas), que aparece em código por aí. Já max e min funcionam com textos, comparando por ordem alfabética.
- O que acontece se eu usar max() numa lista vazia?
- ValueError: max() arg is an empty sequence. Não existe maior item do nada. O sum, curiosamente, aceita lista vazia e devolve 0. Se a lista pode estar vazia no seu programa, confira antes com if lista.
- Por que aprender a versão manual se sum() e max() existem?
- Porque o padrão acumulador se adapta a qualquer variação (somar só os aprovados, contar os maiores que X, achar o segundo maior) e os atalhos não. Além disso, entrevistas e provas de lógica cobram a versão manual exatamente para ver se você entende o mecanismo, não só a API.
- Qual a diferença entre for item in lista e for i in range(len(lista))?
- Os dois visitam todos os itens, mas o primeiro entrega o item direto e o segundo entrega só o índice, obrigando você a escrever lista[i] dentro do loop. Em Python, a forma direta é a preferida por ser mais legível; quando precisar do índice TAMBÉM, o enumerate cobre o caso.
- O enumerate com start=1 muda os índices reais da lista?
- Não muda nada na lista: o start=1 só desloca o número que o enumerate entrega para exibição. O item continua no índice real dele; se for usar o número para acessar ou remover (lista[n]), lembre de subtrair 1. Essa continha aparece na prática da aula 7.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.