Python Lista sort() com exemplos

Qual รฉ o mรฉtodo sort() em Python?

Funรงรฃo classificar em Python ajuda a classificar uma lista em ordem crescente ou decrescente. Ele pode ser usado para classificar uma lista numรฉrica, tuplas e uma lista de strings. Ele nรฃo cria uma lista separada, mas modifica ou classifica a original.

Sintaxe do mรฉtodo Sort em Python

A funรงรฃo de classificaรงรฃo tem a seguinte sintaxe listada abaixo: โ€“

List.sort(key=โ€ฆ, reverse=โ€ฆ)

A funรงรฃo de classificaรงรฃo possui dois parรขmetros opcionais, listados abaixo: โ€“

  • Chave: - Isso รฉ usado para classificar uma funรงรฃo com base em um critรฉrio de classificaรงรฃo.
  • Reverse: - assume o valor como verdadeiro ou falso. Se for verdade, esta funรงรฃo personalizada classifica 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']

Explicaรงรฃo do cรณdigo:

  • 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 nome e representada por uma expressรฃo lambda. A seguir estรก a sintaxe da 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 tupla e funรงรฃo personalizada para ilustrar como uma funรงรฃo de classificaรงรฃo com parรขmetros-chave ajuda a classificar 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)]

Explicaรงรฃo do cรณdigo:

  • 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 embutida que determina o comprimento do item. O comprimento determinado pode ser usado para indexaรงรฃo na funรงรฃo de classificaรงรฃo. Para fazer isso, atribuรญmos Len ao 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 Cรณdigo:

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']

Explicaรงรฃo do cรณdigo:

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 organizadas primeiro na lista, seguidas por Guru99, que tem comprimento 6.

Este exemplo ilustra o conceito do parรขmetro reverso na funรงรฃo de classificaรงรฃo conforme mostrado abaixo: โ€“

Python Cรณdigo:

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 Cรณdigo:

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}]

Explicaรงรฃo do cรณdigo:

  • 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

Antes de resumir as diferenรงas, vamos entender a sintaxe do mรฉtodo Sorted.

Python Sintaxe:

sorted (list_name, reverse=โ€ฆ., key=..)

Explicaรงรฃo do cรณdigo:

  • 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 conforme mostrado abaixo: -

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

Explicaรงรฃo do cรณdigo:

  • 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 estรฃo os pontos sobre as principais semelhanรงas e diferenรงas: -

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)]

Explicaรงรฃo do cรณdigo:

  • 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 rastreabilidade e gerenciamento eficaz de dados.

Conclusรฃo

  • A funรงรฃo sort ajuda a classificar uma lista numรฉrica e de strings em python.
  • Tambรฉm pode ajudar na classificaรงรฃo de tuplas.
  • Reverse e key sรฃo parรขmetros opcionais da funรงรฃo.
  • Se houver necessidade de ter uma lista separada e simultaneamente ter a lista original, entรฃo a funรงรฃo classificada deverรก ser usada, caso contrรกrio, a funรงรฃo de classificaรงรฃo deverรก ser utilizada para obter uma utilizaรงรฃo otimizada da memรณria.

Resuma esta postagem com: