Listas são a estrutura de dados mais utilizada em Python. Elas permitem armazenar múltiplos valores em uma única variável, de forma ordenada e mutável. Dominar listas é essencial — praticamente todo programa Python as utiliza de alguma forma.
Criando Listas
# Lista de strings
linguagens = ["Python", "JavaScript", "Go", "Rust"]
# Lista de inteiros
notas = [7, 8, 9, 10, 6]
# Lista mista
dados = ["Ricardo", 35, 1.78, True]
# Lista vazia
vazia = []
# Lista criada com range
sequencia = list(range(1, 6))
print(sequencia) # [1, 2, 3, 4, 5]
Acessando Elementos
Listas usam índices baseados em zero. Python também suporta índices negativos — que contam a partir do final:
frutas = ["maçã", "banana", "laranja", "uva", "manga"]
print(frutas[0]) # maçã — primeiro
print(frutas[2]) # laranja
print(frutas[-1]) # manga — último
print(frutas[-2]) # uva — penúltimo
Fatiamento (Slicing)
Extrair sublistas com a notação [start:stop:step]:
numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numeros[2:6]) # [2, 3, 4, 5]
print(numeros[:4]) # [0, 1, 2, 3]
print(numeros[6:]) # [6, 7, 8, 9]
print(numeros[::2]) # [0, 2, 4, 6, 8] — de 2 em 2
print(numeros[::-1]) # [9, 8, 7, ..., 0] — invertida
O fatiamento nunca gera erro de índice — se o limite ultrapassar o tamanho da lista, Python simplesmente vai até o fim.
Modificando Listas
Listas são mutáveis — seus elementos podem ser alterados após a criação:
cores = ["vermelho", "verde", "azul"]
# Alterando um elemento
cores[1] = "amarelo"
print(cores) # ['vermelho', 'amarelo', 'azul']
# Alterando um intervalo
cores[0:2] = ["rosa", "roxo"]
print(cores) # ['rosa', 'roxo', 'azul']
Métodos Principais
lista = [3, 1, 4, 1, 5, 9, 2, 6]
# Adicionar ao final
lista.append(7)
# Inserir em posição específica
lista.insert(0, 0) # insere 0 no índice 0
# Remover por valor
lista.remove(1) # remove a primeira ocorrência de 1
# Remover por índice e retornar o valor
ultimo = lista.pop() # remove e retorna o último
terceiro = lista.pop(2) # remove e retorna o índice 2
# Ordenar in-place
lista.sort()
lista.sort(reverse=True) # ordem decrescente
# Inverter in-place
lista.reverse()
# Contar ocorrências
print(lista.count(1))
# Localizar índice
print(lista.index(5))
# Limpar a lista
lista.clear()
Funções Nativas com Listas
notas = [7.5, 8.0, 9.5, 6.0, 10.0]
print(len(notas)) # 5 — quantidade de elementos
print(sum(notas)) # 41.0 — soma
print(min(notas)) # 6.0 — menor valor
print(max(notas)) # 10.0 — maior valor
# Ordenar sem modificar a original
ordenadas = sorted(notas)
ordenadas_desc = sorted(notas, reverse=True)
Copiando Listas
Um erro comum é tentar copiar uma lista com =:
original = [1, 2, 3]
copia = original # não é uma cópia — é o mesmo objeto!
copia.append(4)
print(original) # [1, 2, 3, 4] — original também mudou!
Para copiar corretamente:
# Forma 1 — método copy()
copia = original.copy()
# Forma 2 — fatiamento
copia = original[:]
# Forma 3 — construtor list()
copia = list(original)
List Comprehension
Uma das características mais elegantes do Python — cria listas de forma compacta e expressiva:
# Forma tradicional
quadrados = []
for i in range(1, 6):
quadrados.append(i ** 2)
# Com list comprehension
quadrados = [i ** 2 for i in range(1, 6)]
print(quadrados) # [1, 4, 9, 16, 25]
# Com filtro
pares = [i for i in range(20) if i % 2 == 0]
print(pares) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# Transformando strings
nomes = ["ana", "bruno", "carla"]
maiusculos = [nome.upper() for nome in nomes]
print(maiusculos) # ['ANA', 'BRUNO', 'CARLA']
Listas Aninhadas (Matrizes)
Listas podem conter outras listas — útil para representar matrizes ou tabelas:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matriz[1][2]) # 6 — linha 1, coluna 2
# Percorrendo uma matriz
for linha in matriz:
for elemento in linha:
print(elemento, end=" ")
print()
# 1 2 3
# 4 5 6
# 7 8 9
Exemplo Completo: Sistema de Notas
def calcular_estatisticas(notas):
"""Calcula média, maior e menor nota de uma lista."""
if not notas:
return None
media = sum(notas) / len(notas)
aprovados = [n for n in notas if n >= 6.0]
reprovados = [n for n in notas if n < 6.0]
return {
"total": len(notas),
"media": round(media, 2),
"maior": max(notas),
"menor": min(notas),
"aprovados": len(aprovados),
"reprovados": len(reprovados),
}
notas_turma = [8.5, 4.0, 7.0, 9.5, 5.5, 6.0, 3.0, 10.0]
stats = calcular_estatisticas(notas_turma)
for chave, valor in stats.items():
print(f"{chave:>12}: {valor}")
Resumo
- Listas são ordenadas, mutáveis e aceitam tipos mistos
- Índices começam em zero; índices negativos contam do final
- Fatiamento
[start:stop:step]extrai sublistas com segurança - Principais métodos:
append,insert,remove,pop,sort,reverse - Use
.copy(),[:]oulist()para copiar — nunca apenas= - List comprehensions são a forma pythônica de criar e transformar listas
- Listas aninhadas representam estruturas bidimensionais como matrizes
Referências e Leituras Complementares
- Listas — documentação oficial — https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
- List comprehensions (PEP 202) — https://peps.python.org/pep-0202/
- Funções nativas: sorted, min, max, sum — https://docs.python.org/3/library/functions.html
- Módulo copy — cópia profunda de objetos — https://docs.python.org/3/library/copy.html
- MATTHES, Eric. Python Crash Course. 3. ed. No Starch Press, 2023. Cap. 3–4.
- RAMALHO, Luciano. Fluent Python. 2. ed. O'Reilly Media, 2022. Cap. 2.
- SEDGEWICK, Robert; WAYNE, Kevin. Algorithms. 4. ed. Addison-Wesley, 2011. Cap. 1 — para fundamentos de estruturas de dados.