Percorrendo e transformando listas

Processar todos os itens e construir resultados derivados.

Percorrendo e transformando listas

Objetivo da aula

Processar todos os itens e construir resultados derivados.

Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.

Começando do zero

Percorrer uma lista permite aplicar uma regra a cada elemento. Em muitos casos, não queremos modificar a lista original; criamos uma nova lista com resultados transformados ou apenas com itens que satisfazem uma condição. Essa estratégia torna o fluxo mais explícito.

Uma imagem mental para entender

Imagine uma esteira com frutas. Para cada fruta, você pesa e coloca o peso em outra caixa. Ou separa apenas as frutas maduras. Percorrer, transformar e filtrar listas é a versão programável dessa esteira.

Conceitos essenciais, sem pular etapas

Percorrer diretamente

for item in lista fornece cada elemento sem exigir controle manual de índice.

Transformar

Para cada valor, calcule um novo valor e adicione em outra lista.

Filtrar

Use uma condição para decidir quais elementos entram no resultado.

Não alterar enquanto percorre sem necessidade

Remover elementos da mesma lista que está sendo percorrida pode produzir comportamentos difíceis de prever para iniciantes. Prefira construir outra lista quando o objetivo for filtrar.

Resultado explícito

Listas derivadas deixam claro o que era entrada e o que foi produzido pelo processamento.

Modelo mental

LISTA DE ENTRADA → for → REGRA DE TRANSFORMAÇÃO/FILTRO → LISTA DE SAÍDA

Exemplo 1 — primeiro veja o programa inteiro

numeros = [1, 2, 3, 4]
dobros = []

for numero in numeros:
    dobro = numero * 2
    dobros.append(dobro)

print("Originais:", numeros)
print("Dobros:", dobros)

Agora vamos ler linha por linha

  • dobros começa vazia.
  • A cada iteração, calculamos o dobro do item atual.
  • append() adiciona o resultado à nova lista.
  • A lista original permanece intacta.

Saída esperada

Originais: [1, 2, 3, 4]
Dobros: [2, 4, 6, 8]

Exemplo 2 — o mesmo conceito em outra situação

notas = [4, 8, 6, 9, 7]
aprovadas = []
for nota in notas:
    if nota >= 7:
        aprovadas.append(nota)
print(aprovadas)

Esse é um filtro: somente valores que satisfazem a condição entram na nova lista. Mais tarde você poderá conhecer sintaxes compactas, mas primeiro domine o fluxo explícito.

Experimento guiado

Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.

  1. Trace a lista dobros após cada iteração.
  2. Crie uma lista de quadrados a partir de [1,2,3,4,5].
  3. Filtre apenas números pares de uma lista.
  4. Compare preservar a entrada com modificar a lista original.

Mini desafio

A partir de [3, -1, 8, 0, -5, 2], construa uma nova lista contendo somente os números positivos.

Solução comentada

valores = [3, -1, 8, 0, -5, 2]
positivos = []
for valor in valores:
    if valor > 0:
        positivos.append(valor)
print(positivos)

Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.

Erros comuns e por que acontecem

  • Remover itens da mesma lista durante um for sem entender o deslocamento dos índices.
  • Criar resultado fora da lógica correta e esquecer de inicializar a lista antes do laço.
  • Confundir “transformar” com “filtrar”: um muda cada item; o outro seleciona alguns itens.
  • Usar índices quando precisa apenas do valor atual.

Cheque se você realmente entendeu

O que é transformação de lista?

Resposta: Produzir valores derivados de cada elemento, geralmente em outra coleção.

O que é filtro?

Resposta: Selecionar apenas elementos que satisfazem uma condição.

Por que uma nova lista pode ser mais segura para filtrar?

Resposta: Porque evita modificar a coleção enquanto ela está sendo percorrida.

Resumo em linguagem simples

Nesta aula, o ponto central foi Percorrendo e transformando listas. Tente explicar o modelo LISTA DE ENTRADA → for → REGRA DE TRANSFORMAÇÃO/FILTRO → LISTA DE SAÍDA sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.

Conexão com a próxima aula

Na próxima aula, Dicionários: chave e valor, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.