🌗 ← Índice
Data: 12/06/2026
Nível: Básico
Listas, for, while, range(), enumerate() e métodos como append(), pop() e sort(). Processe coleções com elegância.
Listas guardam múltiplos valores em uma única variável. Delimitadas por [], podem conter qualquer tipo de dado.
# Lista de serviços da barbearia
servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
print(f"Serviços disponíveis: {servicos}")
print(f"Total: {len(servicos)} serviços")
▶ Saída:
Serviços disponíveis: ['Corte', 'Barba', 'Corte + Barba', 'Hidratação']
Total: 4 serviços
💡 len(): Retorna o tamanho de qualquer sequência — listas, strings, tuplas, etc.
Cada item tem um índice — começa em 0 (zero-indexado). Índices negativos contam do final.
servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
print(f"Primeiro: {servicos[0]}") # Corte
print(f"Segundo: {servicos[1]}") # Barba
print(f"Último: {servicos[-1]}") # Hidratação
print(f"Penúltimo: {servicos[-2]}") # Corte + Barba
# Slicing — fatiamento [início:fim] (fim exclusive)
print(f"Dois primeiros: {servicos[0:2]}")
▶ Saída:
Primeiro: Corte
Segundo: Barba
Último: Hidratação
Penúltimo: Corte + Barba
Dois primeiros: ['Corte', 'Barba']
| Método | O que faz | Exemplo |
|---|
|--------|-----------|---------|
| `append(x)` | Adiciona no final | `servicos.append("Sobrancelha")` |
|---|---|---|
| `remove(x)` | Remove a primeira ocorrência | `servicos.remove("Barba")` |
| `pop(i)` | Remove e retorna o item no índice i | `servicos.pop(0)` |
| `sort()` | Ordena a lista (in-place) | `servicos.sort()` |
| `insert(i, x)` | Insere x na posição i | `servicos.insert(1, "Barboterapia")` |
💡 Use in para testar existência: "Corte" in servicos retorna True.
O for percorre cada item automaticamente, sem precisar de índices.
servicos = ["Corte", "Barba", "Corte + Barba"]
for servico in servicos:
print(f"✂️ {servico}")
▶ Saída:
✂️ Corte
✂️ Barba
✂️ Corte + Barba
servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
precos = [70, 40, 110, 30]
print("📋 Cardápio Los Michelitos")
print("=" * 30)
for i in range(len(servicos)):
print(f"{servicos[i]:20s} R$ {precos[i]:.2f}")
💡 Formatação: f"{var:20s}" alinha em 20 caracteres. f"{var:.2f}" formata com 2 casas decimais.
range() gera sequências sem ocupar memória (é um *iterador*).
| Chamada | Gera | Explicação |
|---|
|---------|------|------------|
| `range(5)` | 0, 1, 2, 3, 4 | De 0 até n-1 |
|---|---|---|
| `range(1, 6)` | 1, 2, 3, 4, 5 | De início até fim-1 |
| `range(2, 11, 2)` | 2, 4, 6, 8, 10 | Com passo (step) |
# Horários disponíveis (08h às 12h)
for hora in range(8, 12):
print(f"{hora:02d}:00 — Disponível")
▶ Saída:
08:00 — Disponível
09:00 — Disponível
10:00 — Disponível
11:00 — Disponível
💡 Prefira for item in lista em vez de range(len(lista)). Só use range quando precisar do índice.
O while repete enquanto a condição for True. Use quando não sabe quantas repetições serão necessárias.
senha_correta = "admin123"
tentativa = ""
tentativas = 0
while tentativa != senha_correta and tentativas < 3:
tentativa = input("Senha do admin: ")
tentativas += 1
if tentativa == senha_correta:
print(f"✅ Acesso liberado ({tentativas} tentativa(s))")
else:
print(f"❌ Acesso bloqueado após {tentativas} tentativas")
⚠️ Loop infinito: Se a condição nunca ficar False, o while roda para sempre. Sempre tenha uma saída garantida.
# Simulação de fila da barbearia
fila = ["João", "Pedro", "Lucas", "Ana"]
print("🎯 Clientes na fila:")
for i, cliente in enumerate(fila, 1):
print(f" {i}º — {cliente}")
# Atendendo um por um
while fila:
atual = fila.pop(0)
print(f"✂️ Atendendo: {atual}")
print("✅ Fila vazia!")
💡 enumerate() retorna índice + valor. O , 1 faz o índice começar em 1. Lista vazia é False — por isso while fila: funciona.
Gere horários de 08:00 às 18:00 e classifique em Manhã, Almoço ou Tarde:
for h in range(8, 19):
horario = f"{h:02d}:00"
if h < 12:
print(f"{horario} — 🌅 Manhã")
elif h < 13:
print(f"{horario} — 🍽️ Almoço")
else:
print(f"{horario} — 🌇 Tarde")
precos = [150, 80, 230, 90, 70]
total = 0
for p in precos:
total += p
print(f"💰 Faturamento do dia: R$ {total:.2f}")
print(f"👥 Média por cliente: R$ {total/len(precos):.2f}")
print(f"📊 Total de clientes: {len(precos)}")
💡 Desafio: Adicione um if para contar quantos clientes gastaram mais de R$ 100.
Crie um programa com menu interativo:
1. Comece com fila = []
2. Loop while True com menu (1 Adicionar, 2 Atender, 3 Ver fila, 4 Sair)
3. Use input() e if/elif para as ações
💡 Dica AWS: No Lambda você usa for para processar lotes de eventos — registros SQS, arquivos S3, itens DynamoDB Scan.
| Conceito | Doc Oficial |
|---|
|----------|-------------|
| `lista = [a, b, c]` | [docs.python.org/3/tutorial/introduction.html#lists](https://docs.python.org/3/tutorial/introduction.html#lists) |
|---|---|
| `lista[i]` | [docs.python.org/3/tutorial/introduction.html#lists](https://docs.python.org/3/tutorial/introduction.html#lists) |
| `append(x)` | [docs.python.org/3/tutorial/datastructures.html](https://docs.python.org/3/tutorial/datastructures.html#more-on-lists) |
| `for item in lista:` | [docs.python.org/3/tutorial/controlflow.html#for-statements](https://docs.python.org/3/tutorial/controlflow.html#for-statements) |
| `range(início, fim, passo)` | [docs.python.org/3/library/stdtypes.html#range](https://docs.python.org/3/library/stdtypes.html#range) |
| `while condição:` | [docs.python.org/3/tutorial/controlflow.html#for-statements](https://docs.python.org/3/tutorial/controlflow.html#for-statements) |
| `enumerate(lista)` | [docs.python.org/3/library/functions.html#enumerate](https://docs.python.org/3/library/functions.html#enumerate) |
| `len(lista)` | [docs.python.org/3/library/functions.html#len](https://docs.python.org/3/library/functions.html#len) |
✨ Anterior: [[Aula-P02-Condicionais]] | Próxima: [[Aula-P04-Funcoes]]