Listas de Python com o método que você quiser.
Pré-Texto
Imagine que você está resolvendo um problema em Python e precisa manipular uma lista. Você procura na documentação, vasculha fóruns, Reddit, Stack Overflow e até recorre a LLMs… mas descobre que o método que você precisa simplesmente não existe.
Seja para encontrar números pares, contar caracteres em um elemento específico ou qualquer outra tarefa, você acaba criando funções próprias e espalhando chamadas por todo o código — até que, em algum momento, pensa: "Isso aqui está ficando confuso".
E se eu te dissesse que é possível usar listas nativas do Python e ainda ter seus próprios métodos, acessando-os como se fossem parte da lista? Neste artigo — o primeiro de uma série sobre estruturas de dados e algoritmos — você vai descobrir como fazer isso e talvez encontre o insight que faltava para simplificar seu código.
Introdução
Para se tornar um bom desenvolvedor de soluções computacionais para problemas reais, é fundamental estar com o pensamento computacional e o raciocínio lógico bem treinados. Isso significa entender como modelar o mundo real através de estrutura de dados.
Neste primeiro artigo da série, vamos falar sobre listas em Python - uma das estruturas mais usadas - e como criar métodos personalizados para manipulação de listas.
O que é uma lista em Python?
Uma lista é uma estrutura de dados interna do Python (built-in) usada para armazenar múltiplos elementos. É ordenável, mutável e pode conter elementos de diferentes tipos.
Exemplo básico:
python
# Lista vazia
elementos = []
# Lista com inteiros
inteiros = [0, 3, 2, 1, 5, 4, 6]
# lista com tipos variados
usuario = [1, 'Fulano', 'da Silva', 18, 'fulano@email.com', True]
Manipulando listas com métodos nativos
Alguns métodos importantes:
python
# Adicionar elemento
elementos.append('agua')
# Ordenar lista
inteiros.sort() # Resultado: [0, 1, 2, 3, 4, 5, 6]
Criando um algoritmo personalizado
Suponha que queremos separar os números pares e ímpares de uma lista
python
numeros = range(0, 100)
pareas = []
impares = []
for element in numeros:
if isinstance(elemento, int):
if elemento % 2 == 0:
pares.append(elemento)
else:
impares.append(elemento)
print(f"Pares: {pares}")
print(f"Ímpares: {impares}")
Criando métodos próprios para listas
O tipo list é, na verdade, uma classe com vários métodos. Podemos herdar essa classe e adicionar novos métodos.
python
class Numeros(list):
def detect_pairs(self):
"""Retorna apenas os números pares"""
return [x for x in self if x % 2 == 0]
def detect_odds(self):
"""Retorna apenas os números ímpares"""
return [x for x in self if x % 2 != 0]
Usando a nova classe
python
numeros = Numeros(range(0, 100))
pares = numeros.detect_pairs()
impares = numeros.detect_odds()
print(pares)
print(impares)
Te convido a verificar a estrutura da classe Numeros fazendo o comando:
python
help(Numeros)
Veja que interessante, tem toda a estrutura da classe list, e ainda conta com os dois métodos que acabamos de desenvolver. Assim, é possível usar a estrutura buit-in da classe list, e ainda chamar métodos próprios, tornando seu código mais legível.
Conclusão
Estendendo classes internas do Python, podemos manter todos os métodos originais e ainda adicionar comportamentos específicos. No próximo artigo, falaremos sobre pilhas e como elas podem ser aplicadas em Python.