Como classificar listas em Python

Publicados: 2022-03-30

Este artigo ensinará como classificar uma lista em Python.

Em Python, você pode usar o método sort() para classificar uma lista no local. Ou você pode usar a função integrada sorted() para obter uma cópia ordenada da lista.

Neste tutorial, você aprenderá:

  • Sintaxe do método sort() e da função sorted()
  • Exemplos de código de classificação de listas em ordem crescente e decrescente
  • Personalizar a classificação usando o parâmetro key
  • Diferença entre sort() vs sorted()

Vamos começar!

Sintaxe do método Python sort()

O método sort() atua em uma lista do Python. E ordena a lista no lugar - e modifica a lista original.

A sintaxe do método sort() do Python é:

 <list>.sort(reverse = True | False, key = <func>)

Vamos agora analisar a sintaxe acima.

  • <list> é qualquer objeto de lista Python válido.
  • reverse é um parâmetro opcional que aceita True ou False.
  • O valor padrão de reverse é False e a lista é classificada em ordem crescente. Dê True para classificar a lista em ordem decrescente.
  • key também é um parâmetro opcional definido como <func> .
  • <func> pode ser uma função interna ou uma função definida pelo usuário.

Na próxima seção, você começará a codificar exemplos simples.

Como classificar a lista Python em ordem crescente

Considere os nums da lista. Para classificar a lista em ordem crescente, você pode chamar o método sort() na lista.

Execute o trecho de código a seguir.

 nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]

Os nums lista foram classificados em ordem crescente e a lista original foi modificada. Isso é chamado de classificação no local .

Como classificar a lista Python em ordem decrescente

Para classificar a lista em ordem decrescente, defina reverse para True , conforme mostrado abaixo.

 nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]

Você pode ver que a lista agora está classificada em ordem decrescente.

Como usar a chave com o método Python sort()

Nesta seção, vamos usar o parâmetro key e personalizar a classificação.

Aqui, mod5() é uma função que recebe um número x e retorna o resto quando o número x é dividido por 5.

 def mod5(x): return x % 5

E gostaríamos de usar a função acima como a key .

Agora, execute a seguinte célula de código.

 nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]

Reserve um minuto para analisar a saída.

Observe como, em vez da classificação normal, agora você está personalizando sua classificação de acordo com a key que é mod5 .

  • O número que deixa o resto mínimo quando dividido por 5 vem primeiro agora.
  • E o número que deixa o maior resto quando dividido por 5 é o último elemento da lista ordenada.

Para verificar se esse é o caso, execute o trecho de código a seguir.

 nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5

5 divide 25 exatamente, e o resto é 0. Então esse é o primeiro elemento na lista ordenada. 6 deixa um resto 1, então é o segundo elemento e assim por diante. 9 deixa o resto 4 quando dividido por 5, e é o último elemento da lista ordenada.

Em vez de definir uma função separada, você também pode usar funções lambda. Em Python, lambdas são funções anônimas de uma linha. lambda args: expression retorna a expressão calculada nos argumentos .

Agora, vamos reescrever a classificação acima usando a expressão lambda, conforme mostrado abaixo.

 nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]

Até agora, você aprendeu como ordenar uma lista de números. Em seguida, vamos ver como você pode classificar uma lista de strings em Python.

Como classificar a lista Python em ordem alfabética

Nesta seção, você aprenderá a classificar uma lista de strings — com exemplos inspirados em Harry Potter.

python-sort-list

Em nosso exemplo, students são uma lista de alunos em Hogwarts. E gostaríamos de classificá-los em ordem alfabética de seus nomes.

Ao classificar uma lista de strings, a classificação padrão é em ordem alfabética.

 students = ["Harry","Ron","Hermione","Draco","Cedric"]

Vamos imprimir a lista ordenada para verificar o resultado da ordenação.

 students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Como classificar a lista Python em ordem alfabética reversa

Para classificar a lista em ordem alfabética inversa, defina reverse = True , conforme mostrado no trecho de código abaixo.

 students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

A partir da saída, você pode ver que a lista foi realmente classificada na ordem inversa.

Como usar o parâmetro chave Personalizar a classificação

Nesta seção, vamos personalizar a classificação usando o parâmetro de key opcional.

Considere a lista a seguir, houses .

 houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]

Aqui, houses é uma lista de dicionários. Cada dicionário contém dois pares de valores-chave, um denotando os nomes dos alunos e o outro a casa a que pertencem.

Agora, gostaríamos de ordenar esta lista de casas na ordem alfabética das casas a que pertencem.

Como você já deve ter adivinhado, devemos definir o parâmetro- key para a casa dos alunos em particular.

Para recuperar a casa de cada aluno, você pode definir uma função returnHouse() , conforme mostrado abaixo.

 def returnHouse(student): return student['house']

Esta função retorna a casa à qual o aluno em particular pertence.

Agora, você pode chamar o método sort() na lista de casas, conforme mostrado.

 houses.sort(key=returnHouse)

Na saída abaixo, observe como a lista é ordenada pela casa e não pelos nomes dos alunos. É por isso que temos Grifinória, Lufa-Lufa e Sonserina – em ordem alfabética.

 print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]

Para definir o parâmetro de key de acordo, você também pode usar uma função lambda. Para cada item da lista, esta função retorna a casa para aquele item da lista.

Execute a seguinte célula de código para verificar isso.

 houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]

Em todos os exemplos até agora, você usou o método sort() em uma lista. E agora você sabe que isso modifica a lista original.

E se você quiser manter a lista original como está, mas obter uma cópia ordenada da lista?

Bem, em Python, você pode usar a função sorted() para fazer isso.

Sintaxe da função ordenada () do Python

A função sorted() recebe uma lista ou qualquer coleção como argumento. E retorna uma cópia ordenada da lista — e a lista original não é modificada.

A sintaxe para a função sorted() do Python é:

 <sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

Observe como a sintaxe é muito semelhante ao método sort() que vimos anteriormente.

  • <list> é qualquer objeto de lista Python válido e é um parâmetro obrigatório .
  • reverse e key são parâmetros opcionais

Nota : Ao contrário do método sort() que atua apenas em listas, a função sorted() pode ser usada para classificar qualquer iterável do Python, como listas, strings e dicionários.

Como classificar a lista do Python usando a função sorted ()

#1. Neste exemplo, nums é uma lista de números.

Você pode chamar a função sorted() com nums como argumento. E atribua-o à lista sorted_nums1 .

 nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]

Na saída acima, você pode ver que nums foi classificado em ordem crescente por padrão.

Além disso, observe que a lista original nums não é modificada - porque sorted() retorna uma nova lista. Isso é verificado a seguir.

 print(nums) # Output: [25, 13, 6, 17, 9]

#2 . Agora, defina o parâmetro opcional reverse para True e obtenha sorted_nums2 .

Conforme mostrado na célula de código abaixo, sorted_nums2 é uma nova lista com os itens classificados em ordem decrescente.

 sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]

#3. Neste exemplo, vamos trabalhar com uma lista de strings.

Assim como nos exemplos anteriores, chamar a função sorted() retorna uma nova lista. E os itens são classificados em ordem alfabética.

 fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. Agora, vamos personalizar a classificação usando o parâmetro de key opcional. Defina a key para len . Isso classificará a lista com base no comprimento das strings.

Nota: Em Python, a função len() integrada aceita qualquer iterável, como listas, strings, tuplas e assim por diante. E retorna o comprimento do iterável.

A string com o menor comprimento aparece primeiro na lista ordenada e a string mais longa aparece no final da lista ordenada.

 fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

Na saída acima, pera é a corda mais curta e morango é a mais longa.

Método Python sort() vs. função sorted()

Até agora, você aprendeu a usar o método sort() , bem como a função sorted() . Nesta seção, vamos enumerar as diferenças entre esses dois métodos.

Método Python .sort() Função ordenada() do Python
Classifica a lista no lugar—modifica a lista original Retorna uma nova lista ordenada
Funciona apenas com listas Python Funciona com iteráveis ​​Python, como listas, strings e outras coleções
Tem tipo de retorno None Retorna uma cópia classificada do iterável

Resumindo

Espero que você tenha achado este tutorial de listas de Python útil.

Vamos resumir rapidamente o que cobrimos.

  • Use list.sort(reverse = True | False, key = <func>) com os parâmetros opcionais reverse e key para classificar uma lista no local.
  • Use sorted(list, reverse = True | False, key = <func>) para obter uma cópia ordenada da lista.

Agora que você aprendeu a classificar listas em Python, aprenda sobre a compreensão de listas em Python. Ou você também pode aprender a lidar com arquivos ou trabalhar com arquivos JSON em Python.

Você pode tentar os exemplos dados acima no compilador Geekflare Online Python.