Desvendando as Listas em Python
Seu Alicerce para Análise e Ciência de Dados
Continuação do estudo de listas
Agora que já exploramos diversas formas de criar listas e compreendemos como acessar e verificar a posição de elementos, chegou o momento de aprender a ordenar listas. Em artigos anteriores, inclusive, mencionamos uma forma de ordenação utilizando o slicing. Caso não tenha tido a oportunidade de acompanhar essa jornada, convidamos você a explorar os artigos anteriores para uma compreensão completa:
Artigo 1: https://www.dio.me/articles/desvendando-as-listas-em-python-c6eaaef7fcf6
Artigo 2: https://www.dio.me/articles/desvendando-as-listas-em-python-c80f3fb24a1e
A ordenação de listas desempenha um papel crucial na análise de dados, sendo fundamental para o cálculo de diversas medidas em estatística descritiva, como a mediana e os quartis. Dominar a ordenação de listas é, portanto, uma habilidade valiosa com aplicações práticas significativas.
Vamos iniciar com um exemplo de ordenação simples utilizando o algoritmo bubble sort. Este algoritmo envolve iterações aninhadas para comparar elementos adjacentes de uma lista e reorganizá-los com base no resultado dessas comparações. Observe o teste de mesa a seguir:
lista = [2, -5, 10, 88, 0]
Após essas iterações, a lista estará ordenada: [-5, 0, 2, 10, 88]
. Vejamos a implementação desse algoritmo em Python:
lista = [2, -5, 10, 88, 0]
tamanho_lista = len(lista)
for i in range(tamanho_lista):
for j in range(0, tamanho_lista - i - 1): # Sempre parar antes do i
print(f"itercao: {i+1} - {lista}")
if lista[j] > lista[j + 1]:
# Elementos trocando de posição
lista[j], lista[j+1] = lista[j + 1], lista[j]
print(f"Resultado: {lista}")
Ufa, bastante código para uma tarefa comum!
Felizmente, Python oferece uma solução muito mais prática e eficiente para ordenar listas através do método sort()
da classe list
. Assim como o exemplo manual, o método sort()
também modifica a lista original, realizando a ordenação in place. Tentar atribuir o resultado de lista.sort()
a uma nova variável resultará em None
.
Sintaxe:
lista = [2, -5, 10, 88, 0]
lista.sort()
print(lista)
# Saída: [-5, 0, 2, 10, 88]
Qual a aplicação prática disso? Considere o seguinte cenário: você possui uma lista com as idades dos funcionários de uma empresa e deseja ordená-las de forma crescente para analisar a distribuição etária. Para isso, pode calcular o 1º e o 3º quartil:
idades_func = [62, 35, 47, 54, 41, 28, 18, 38, 31, 21]
idades_func.sort()
print(idades_func)
# Saída: [18, 21, 28, 31, 35, 38, 41, 47, 54, 62]
Com a lista ordenada, o cálculo da mediana e dos quartis torna-se direto.
Em Python, a estrutura de dados lista oferece dois métodos para ordenar seus elementos: .sort()
para ordem crescente e .reverse()
para ordem decrescente. Ambos realizam a ordenação in place, alterando a lista original.
O método reverse()
inverte a ordem dos elementos na lista, o que é útil em diversos cenários, como rankear filiais por número de vendas ou identificar o vendedor com melhor desempenho em um período.
vendas_filiais = [35000, 28000, 42000, 31000]
vendas_filiais.sort(reverse=True) # Ordena de forma decrescente
print(vendas_filiais)
# Saída: [42000, 35000, 31000, 28000]
É importante notar a diferença entre o método .sort()
e a função `built-in` sorted()
. Enquanto .sort()
modifica a lista original in place, a função sorted()
cria uma nova lista ordenada, preservando a lista original.
lista_original = [5, 1, 4, 2, 8]
lista_ordenada_sorted = sorted(lista_original)
print(f"Lista original: {lista_original}") # Saída: Lista original: [5, 1, 4, 2, 8]
print(f"Lista ordenada (sorted): {lista_ordenada_sorted}") # Saída: Lista ordenada (sorted): [1, 2, 4, 5, 8]
lista_original.sort()
print(f"Lista original (sort): {lista_original}") # Saída: Lista original (sort): [1, 2, 4, 5, 8]
Considerações Finais
A escolha entre .sort()
e sorted()
dependerá da sua necessidade de manter ou não a lista original. Se a lista original não for mais necessária após a ordenação, .sort()
pode ser mais eficiente por não criar uma nova lista. Caso precise da lista original em sua ordem inicial, sorted()
é a opção adequada.
Com a exploração da ordenação, chegamos ao término desta série introdutória sobre as listas em Python, desvendando desde a sua criação e acesso aos elementos até as poderosas ferramentas de modificação e organização. Contudo, o universo das listas é vasto e reserva ainda funcionalidades mais avançadas e nuances de performance que enriquecerão ainda mais o seu arsenal de habilidades em análise e ciência de dados. Fique atento, pois em breve embarcaremos em uma nova jornada para aprofundar esses aspectos, preparando você para dominar as listas em Python em sua totalidade.