Python Lista sort() com exemplos

⚡ Resumo Inteligente

Python A função `list sort()` organiza os elementos de uma lista no próprio local, em ordem crescente por padrão ou decrescente através do parâmetro `reverse`, enquanto uma função de chave opcional ordena por critérios personalizados, como comprimento, campos de tupla ou funções definidas pelo usuário.

  • 🔘 Sintaxe: O método sort() aceita parâmetros opcionais de chave e reversão e modifica a lista original sem criar uma cópia.
  • ☑️ Controle de pedidos: Ao definir o parâmetro reverse como True, os valores são classificados do maior para o menor, em vez da ordem crescente padrão.
  • Parâmetro chave: Uma função chave como `len` ordena elementos por um valor derivado, como o comprimento de uma string ou um campo de tupla.
  • 🧪 ordenar vs. ordenado: O método sort() modifica a lista no próprio local e retorna None, enquanto sorted() retorna uma nova lista e mantém a original.
  • 🛠️ Critérios personalizados: Expressões lambda e funções definidas pelo usuário permitem que a função sort() ordene tuplas, dicionários e tuplas nomeadas por qualquer atributo escolhido.
  • 🤖 Fluxos de trabalho de IA: Os fluxos de trabalho de aprendizado de máquina classificam as previsões por pontuação e selecionam os melhores resultados antes da classificação ou avaliação.

Python Classificação de lista()

Qual é o método sort() em Python?

A função sort() em Python Ajuda a ordenar uma lista em ordem crescente ou decrescente. Pode ser usada para ordenar listas numéricas, tuplas e listas de strings. Ela não cria uma lista separada, mas modifica ou ordena a lista original.

Sintaxe do método Sort em Python

A função de ordenação tem a seguinte sintaxe:

List.sort(key=…, reverse=…)

A função de ordenação possui dois parâmetros opcionais, a saber:

  • Chave: - Isso é usado para classificar uma função com base em um critério de classificação.
  • Reverse: – Ela recebe o valor como verdadeiro ou falso. Se verdadeiro, esta função personalizada ordena a lista em ordem decrescente.

Classificando uma lista em ordem crescente usando o método Sort em Python

In Python, a função de classificação, por padrão, classifica qualquer lista em ordem crescente. Uma lista em ordem crescente tem o valor mais baixo no lado esquerdo e o valor mais alto no lado direito.

Exemplo:

Python código:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Saída:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Explicação:

  • A lista acima é uma lista de strings definida aleatoriamente.
  • A função de classificação de Python ajuda a classificar a lista aleatória em ordem crescente, com o menor comprimento da palavra no lado esquerdo e o maior comprimento da palavra no lado direito.

Classificando uma lista em ordem decrescente

A função sort também permite que uma lista seja classificada em ordem decrescente. Pode ser definido como a ordem onde a lista começa com o valor mais alto e termina com o valor mais baixo.

O parâmetro reverso da função de classificação é atribuído como verdadeiro para obter uma lista classificada em ordem decrescente.

Vejamos o exemplo abaixo:

Python código:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Saída:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Nota: Certifique-se de que a atribuição da palavra “True” ao parâmetro reverso comece com “T” maiúsculo para evitar erros de tempo de execução.

Classificando uma lista de tuplas usando o método Sort em Python

Python Tuplas são coleções de elementos imutáveis ​​que seguem uma sequência ordenada. PythonA função sort de pode ser usada para classificar uma lista de tuplas usando uma função personalizada e uma expressão lambda.

Uma função personalizada pode ser criada sem um nome e representada por uma expressão lambda. A seguir, a sintaxe para uma expressão lambda:

Sintaxe:

Lambda arguments: expression

A sintaxe acima é equivalente ao código python abaixo:

def name (arguments):
return expression

Aqui está um exemplo de uma tupla e uma função personalizada para ilustrar como uma função de ordenação com parâmetros-chave ajuda a ordenar os elementos em uma tupla:

Python código:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Saída:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Explicação:

  • O parâmetro reverso é definido como verdadeiro para classificar a tupla em ordem decrescente.
  • A função personalizada leva o segundo elemento da tupla.
  • Isso é utilizado como a chave da função de classificação.

Vejamos o exemplo abaixo que faz uso da expressão lambda:

Python código:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Saída:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Explicação:

  • A expressão lambda ajuda a classificar os elementos da tupla de cima para baixo, com a chave como o segundo elemento da tupla.
  • O programa verificará o valor mais alto do segundo elemento da tupla.

Classificando itens da lista usando Len como parâmetro chave

Len é uma função integrada que determina o comprimento do item. O comprimento determinado pode ser usado para indexação na função de ordenação. Para isso, atribuímos Len ao item. Python parâmetro-chave da função de classificação.

Os seguintes Python O código ilustra como usar a função Len com a função sort.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Saída:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Explicação:

Classificando itens da lista usando Len

  • O comprimento do elemento torna-se um índice para o parâmetro chave para organizar a lista em ordem crescente.
  • A função Len estima o comprimento de cada elemento presente na lista base.
  • Mantém o elemento mais curto no lado esquerdo e o elemento maior no lado direito.
  • Aqui, as palavras alto e java têm comprimento 4, que são dispostas em primeiro lugar na lista, seguidas por Guru99, que tem um comprimento de 6.

Este exemplo ilustra o conceito do parâmetro reverso na função de ordenação, conforme mostrado abaixo:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Saída:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Classificando itens da lista usando função definida pelo usuário como parâmetro principal

Você também pode usar uma função definida pelo usuário como parâmetro chave para classificar uma lista. Aqui está um exemplo:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Saída:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Explicação:

  • Uma função definida pelo usuário é criada para retornar o ano
  • O parâmetro chave usa uma função definida pelo usuário como critério.
  • A função de classificação irá organizar a lista em ordem crescente com base no valor do elemento “ano”.

Diferença entre o método de classificação e o método classificado em Python

Após analisar os exemplos acima, é útil comparar diretamente as duas ferramentas de ordenação. Antes de resumir as diferenças, vamos entender a sintaxe do método `Sorted`.

Python Sintaxe:

sorted (list_name, reverse=…., key=..)

Code Explicação:

  • A função classificada classifica a lista em ordem crescente ou decrescente.
  • A função aceita três parâmetros, dos quais dois parâmetros são do tipo opcional e um parâmetro é do tipo obrigatório.
  • O parâmetro list_name é obrigatório ao usar o método Sorted.
  • O método Sorted pode receber qualquer tipo de lista iterável como entrada.
  • Parâmetros-chave e parâmetros reversos são parâmetros opcionais no método classificado em Python.

Aqui está um exemplo de uso da função sort e sorted em Python:

Python código:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Saída:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Explicação:

  • A lista original é passada como parâmetro obrigatório para a função classificada.
  • O método Sorted retorna uma nova lista além da lista original.
  • Como nenhum parâmetro adicional é passado para o método classificado, a nova lista é classificada por padrão em ordem crescente.
  • A função sort não cria nenhuma nova lista.

A seguir, apresentamos os principais pontos de semelhança e diferença:

Função classificada Função de classificação
Função classificada em Python é uma função integrada que usa list_name como parâmetro obrigatório. A função de classificação não usa a lista original como parâmetro.
O método classificado retorna uma nova lista A função Sort não retorna uma nova lista
A função classificada deve ser usada para listas iteráveis A função sort deve ser usada para listas não iteráveis.
Não modifica a lista original e nos permite reter os dados originais. A função sort modifica a função original e, portanto, ocupa menos espaço de memória

Quando utilizar o método classificado ou o método de classificação?

Tomemos um exemplo que requer que os dados da corrida sejam classificados. O programa usa o número de peito e o tempo em segundos para terminar a corrida.

Python código:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Saída:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Explicação:

  • A lista base é classificada usando a função de classificação e a função classificada.
  • A lista base é perdida quando a função de classificação é aplicada.
  • A função de classificação não deve ser aplicada ao conjunto de dados original. Deve ser usado quando houver uma versão copiada do conjunto de dados original.
  • A função Classificada mantém a lista original. Isso não o substitui.
  • Isso oferece melhor traccapacidade e gestão eficaz de dados.

Perguntas Frequentes

Passe `key=str.lower` para o método `sort()`, por exemplo, `names.sort(key=str.lower)`. Cada string é comparada em minúsculas, então 'Apple' e 'banana' são ordenadas alfabeticamente, independentemente de maiúsculas ou minúsculas. A capitalização original de cada elemento é preservada na lista final ordenada.

Ordenar uma lista contendo apenas números ou apenas strings funciona, mas misturar tipos não relacionados, como inteiros e strings, gera um TypeError, porque Python Não é possível compará-los. Converta os valores para um tipo comparável primeiro ou passe uma função de chave que retorne chaves comparáveis.

Python Historicamente, o interpretador utilizava o Timsort, um híbrido de ordenação por intercalação e ordenação por inserção. Desde a versão 3.11, o interpretador utiliza o Powersort, uma variante derivada do Timsort com uma política de intercalação mais inteligente. Ambos são estáveis ​​e têm complexidade de tempo O(n log n) no pior caso.

Sim. O método sort() é estável, portanto, elementos que são considerados iguais mantêm sua ordem relativa original. Isso permite que você classifique por vários critérios em etapas, classificando primeiro pela chave menos importante e, por último, pela mais importante.

O método sort() tem complexidade de tempo O(n log n) nos piores e médios casos. Em dados que já estão em sua maioria ordenados, ele se aproxima de O(n), porque o algoritmo subjacente detecta e reutiliza sequências ordenadas existentes em vez de reordená-las.

Passe uma chave que converta cada item durante a comparação, por exemplo, `nums.sort(key=int)`. A lista então é ordenada por valor numérico em vez de por caractere, de modo que '10' seja corretamente ordenado após '9'. Os elementos armazenados permanecem como strings; apenas a comparação usa seu valor inteiro.

A ordenação organiza as previsões por pontuação ou probabilidade, seleciona os k melhores resultados em sistemas de classificação e recomendação e ordena os registros durante a preparação dos dados. Os fluxos de trabalho de aprendizado de máquina frequentemente ordenam os valores das características ou as saídas do modelo antes da avaliação, portanto, o método `sort()` integrado é uma etapa comum de pré-processamento.

Sim. O GitHub Copilot e os assistentes de IA com agentes geram chamadas para `sort()` e `sorted()`, incluindo funções-chave e expressões lambda, a partir de um breve comentário. Eles podem refatorar loops em instruções de ordenação simples, embora você ainda deva testar a ordenação e confirmar o resultado em casos extremos.

Resuma esta postagem com: