📊 Capítulo 03: Loops & Iteradores Pythonicos
Especialização em Sistemas com Python
🗺️ O Protocolo de Iteração do Python: Iterable vs Iterator
flowchart LR
OBJ["Coleção Iterable (Lista, Tupla, Gerador)\nPossui método __iter__()"]
--> ITERATOR["Objeto Iterator\nPossui método __next__()"]
ITERATOR --> CALL1["next() -> Retorna elemento 1"]
ITERATOR --> CALL2["next() -> Retorna elemento 2"]
ITERATOR --> STOP["next() -> Lança StopIteration! (O loop 'for' captura e encerra silenciosamente)"]
style OBJ fill:#ede7f6,stroke:#512da8,stroke-width:2px
style ITERATOR fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style CALL1 fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style CALL2 fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style STOP fill:#ffebee,stroke:#d32f2f,stroke-width:2px
🎯 Slide 1: range() vs Listas na Memória
-
range(0, 10_000_000)não aloca 10 milhões de inteiros na memória RAM! - É um objeto gerador preguiçoso (lazy) que calcula cada número sob demanda em $O(1)$ de memória.
🎯 Slide 2: enumerate() e zip()
# enumerate para ter o índice sem range(len()):
for i, nome in enumerate(usuarios, start=1):
print(f"{i}: {nome}")
# zip para iterar em paralelo por múltiplas listas:
for nome, nota in zip(nomes, notas):
print(f"{nome} obteve {nota}")
🎯 Slide 3: A Cláusula else em Loops (Recurso Raro)
for item in lista:
if item == alvo:
print("Encontrado!")
break
else:
# Executa APENAS se o loop terminar naturalmente sem atingir o 'break'!
print("Item não encontrado no catálogo.")
🔗 Navegação do Capítulo 03
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim