Listas; Fundamentos
O que é uma lista?
Lista e a estrutura de dados mais usada em Python. Pense nela como uma gaveta com divisorias numeradas. Cada divisoria guarda um item e tem um índice que começa em zero.
Listas são mutáveis, ou seja, você pode adicionar, remover e alterar itens depois de criar. Dá para guardar qualquer tipo: números, textos, booleanos, até outras listas.
Criando listas
números: list[int] = [1, 2, 3, 4, 5]
nomes: list[str] = ["Ana", "Bruno", "Carla"]
tarefas: list[str] = [] # lista vazia
list[int] = lista de inteiros. list[str] = lista de strings.
Acessando elementos (índice começa em 0)
Cada item tem uma posição (índice), começando do 0:
frutas: list[str] = ["maçã", "banana", "laranja", "uva", "manga"]
print(frutas[0]) # → "maçã" (primeiro)
print(frutas[-1]) # → "manga" (ultimo)
print(frutas[-2]) # → "uva" (penultimo)
print(len(frutas)) # → 5
Visualizando:
Índice: 0 1 2 3 4
Valor: "maçã" "banana" "laranja" "uva" "manga"
Slicing -- fatiando a lista
Com lista[início:fim:passo], você pega pedacos da lista. O início e incluso, o fim não:
números: list[int] = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
print(números[2:5]) # → [20, 30, 40]
print(números[:4]) # → [0, 10, 20, 30]
print(números[6:]) # → [60, 70, 80, 90]
print(números[::2]) # → [0, 20, 40, 60, 80]
print(números[::-1]) # → [90, 80, 70, ..., 0] (invertida!)
Modificando valores
Basta atribuir direto no índice:
notas: list[float] = [8.5, 7.0, 9.2, 6.8]
notas[1] = 7.5
print(notas) # → [8.5, 7.5, 9.2, 6.8]
Adicionando elementos
frutas: list[str] = ["maçã", "banana"]
frutas.append("laranja") # adiciona no final
frutas.insert(0, "uva") # adiciona na posição 0
print(frutas) # → ["uva", "maçã", "banana", "laranja"]
Removendo elementos
frutas: list[str] = ["maçã", "banana", "laranja", "uva"]
ultimo: str = frutas.pop() # remove e retorna o ultimo
segundo: str = frutas.pop(1) # remove e retorna o índice 1
frutas.remove("laranja") # remove pelo valor (sem retorno)
| Método | O que faz | Retorna |
|---|---|---|
append() | Adiciona no final | None |
insert() | Adiciona em posição X | None |
pop() | Remove por posição | Elemento removido |
remove() | Remove por valor | None |
Verificando se existe
O operador in checa se um valor está na lista:
cores: list[str] = ["vermelho", "azul", "verde"]
print("azul" in cores) # → True
print("roxo" not in cores) # → True
Para encontrar a posição:
animais: list[str] = ["gato", "cachorro", "peixe"]
print(animais.index("cachorro")) # → 1
Percorrendo listas
Com for (mais limpo):
alunos: list[str] = ["Ana", "Bob", "Carlos"]
for aluno in alunos:
print(f"Aluno: {aluno}")
# → Aluno: Ana
# → Aluno: Bob
# → Aluno: Carlos
Com enumerate (quando precisa do índice):
for i, aluno in enumerate(alunos, start=1):
print(f"{i}. {aluno}")
# → 1. Ana
# → 2. Bob
# → 3. Carlos
Exercício prático
Dada uma lista de notas:
- Calcule a média (soma / tamanho)
- Filtre os aprovados (nota >= 7) usando um loop
- Encontre a maior e a menor nota
notas: list[float] = [8.5, 6.0, 9.2, 4.5, 7.0, 5.5, 8.0, 3.0]
# 1. Some tudo com for, divida por len(notas)
# 2. Crie uma lista vazia e use append para notas >= 7
# 3. Use for para achar a maior é menor
Referências
- Listas -- documentação oficial Python
- Lists and Tuples in Python -- guia completo no Real Python
- Curso Python #14 - Listas (Parte 1) -- Curso em Video
Testa o que você leu
4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.