Listas: operações, métodos e mutabilidade (fatiamento e bons hábitos)

🔧 Por que dominar operações de lista?

Listas são a estrutura de coleção mais usada em Python. Saber manipulá-las com segurança evita bugs e melhora performance. Vamos ver os métodos importantes, como fatiamento funciona e quais erros esperar. A documentação detalha a API de sequências e exemplos (1). Para transformar loops em formas mais concisas, compreensões e geradores são úteis (2).

Operações essenciais

  • append(x) — adiciona um item ao fim.
  • extend(iterable) — adiciona cada item do iterável.
  • insert(i, x) — insere na posição i.
  • remove(x) — remove a primeira ocorrência de x.
  • pop([i]) — remove e retorna o item (último por padrão).
  • clear() — remove todos os itens.

Fatiamento (slicing)

Fatiamento produz uma nova lista com os elementos selecionados: sub = lista[1:4:2]. Lembre que fatiamento cria cópia superficial, logo alterações em objetos mutáveis dentro dessa sublista afetam os itens originais.

Exemplo prático com testes

# Vamos construir e testar pequenas operações
nums = [10, 20, 30]
nums.append(40)            # [10, 20, 30, 40]
nums.insert(1, 15)         # [10, 15, 20, 30, 40]
last = nums.pop()          # last == 40
nums.remove(15)            # [10, 20, 30]
# slicing cria cópia
sub = nums[0:2]
assert sub == [10, 20]
# erro comum: nums[10] -> IndexError
Atividade prática: Abra um REPL (ou um arquivo .py) e execute o trecho acima. Em seguida, experimente estes casos:
  1. Tentar remover um valor inexistente e observar o erro.
  2. Fazer fatiamento com passo negativo e explicar o resultado.

Dica: use try/except se quiser capturar erros e mostrar mensagens amigáveis.

Erros comuns e boas práticas

Um erro frequente é modificar uma lista enquanto itera sobre ela — isso causa comportamento inesperado. Se precisar remover itens durante iteração, iterar sobre uma cópia (for x in lista[:]) ou construir uma nova lista com compreensão é mais seguro (2).