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.




Antonio, seu artigo sobre listas em Python está excelente! A forma como você conecta o conceito de listas nativas com a ideia de estender métodos personalizados deixa claro como a linguagem permite flexibilidade sem perder a legibilidade. Demonstrar a criação da classe Numeros é um ótimo exemplo de como aplicar herança para tornar o código mais expressivo e funcional.
Na DIO, incentivamos justamente esse tipo de pensamento: não só dominar as estruturas nativas, mas saber como adaptá-las para resolver problemas reais de forma elegante e escalável. Essa abordagem de estender funcionalidades internas também é um ótimo treino de POO e raciocínio lógico.
Qual você considera ser o maior desafio para quem está começando a entender herança e extensão de classes em Python, e como você sugere que os iniciantes pratiquem isso de forma eficiente?