image

Bootcamps ilimitados + curso de inglés

80
%OFF
Article image
Antonio Guedes
Antonio Guedes14/04/2025 18:59
Compartir
Microsoft Certification Challenge #3 DP-100Recomendado para tiMicrosoft Certification Challenge #3 DP-100

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]
    

    image

    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.

    Compartir
    Recomendado para ti
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentarios (4)

    JB

    Josias Borges - 15/04/2025 14:49

    Boa tarde, Antonio!

    Uma dúvida, o método ".sort()" aplica qual algoritmo por debaixo dos panos para realizar a ordenação? Se utilizarmos o Burble Sort com 2xLoop For estaremos com a complexidade Big-O O² que indica que quanto maior as entradas desta lista mais lento será para realizar este agrupamento. No cenário real, se eu tiver uma lista com 1.000.000 elementos e for ordenar usando o método ".sort()", não vai dar gargalo?

    DIO Community
    DIO Community - 15/04/2025 13:34

    Excelente explicação, Antonio! Você demonstrou de forma clara como as listas em Python são essenciais para organizar e manipular dados. A comparação entre o algoritmo bubble sort e os métodos nativos .sort() e sorted() foi muito útil para entender as diferenças e escolher a abordagem certa dependendo do contexto. A aplicação prática, como calcular a mediana e os quartis das idades, é um ótimo exemplo de como as listas podem ser usadas na análise de dados.

    Além disso, a explicação sobre o uso de reverse() e a distinção entre sort() e sorted() mostra como essas ferramentas facilitam a organização de dados em cenários diversos. Isso ajuda não só em tarefas simples, mas também em projetos mais complexos, como análises estatísticas.

    Agora que dominamos a ordenação, o próximo passo é explorar métodos mais avançados e entender como essas ferramentas podem impactar a performance, especialmente ao lidar com grandes volumes de dados. Como você acha que essas ferramentas podem ser aplicadas em um projeto de análise de dados em larga escala?

    Antonio Guedes
    Antonio Guedes - 15/04/2025 00:57

    Fala Grande @Arthur Carneiro! Que bom que gostou meu caro

    Arthur Carneiro
    Arthur Carneiro - 14/04/2025 19:48

    Explicação sobre ordenação foi clara e os exemplos ajudaram bastante na compreensão

    Recomendado para tiMicrosoft Certification Challenge #3 DP-100