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:
- 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.

