Python Elenca sort() con esempi

In cosa consiste il metodo sort() Python?

Ordina la funzione in Python aiuta a ordinare un elenco in ordine crescente o decrescente. Può essere utilizzato per ordinare un elenco numerico, tuple e un elenco di stringhe. Non crea un elenco separato ma modifica o ordina l'originale.

Sintassi del metodo Sort in Python

La funzione di ordinamento ha la seguente sintassi come elencato di seguito: –

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

La funzione di ordinamento ha due parametri opzionali, elencati di seguito: –

  • Tasto: - Viene utilizzato per ordinare una funzione in base a un criterio di ordinamento.
  • Revaltrimenti: – assume il valore come vero o falso. Se vero, questa funzione personalizzata ordina l'elenco in ordine decrescente.

Ordinamento di un elenco in ordine crescente utilizzando il metodo Sort in Python

In Python, la funzione di ordinamento, per impostazione predefinita, ordina qualsiasi elenco in ordine crescente. Un elenco in ordine crescente ha il valore più basso sul lato sinistro e il valore più alto sul lato destro.

Esempio:

Python codice:

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

Produzione:

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

Spiegazione del codice:

  • L'elenco precedente è un elenco di stringhe definito in modo casuale.
  • La funzione di ordinamento di Python aiuta a ordinare l'elenco casuale in ordine crescente, con la lunghezza più bassa della parola sul lato sinistro e la lunghezza più alta sul lato destro.

Ordinamento di un elenco in ordine decrescente

La funzione di ordinamento consente inoltre di ordinare un elenco in ordine decrescente. Può essere definito come l'ordine dove l'elenco inizia con il valore più alto e termina con il valore più basso.

Il parametro inverso della funzione di ordinamento viene assegnato come true per ottenere un elenco ordinato in ordine decrescente.

Consideriamo l’esempio seguente: –

Python codice:

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)

Produzione:

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

Nota: assicurarsi che l'assegnazione della parola "True" al parametro inverso inizi con la "T" maiuscola per evitare errori in fase di esecuzione.

Ordinamento di un elenco di tuple utilizzando il metodo Sort in Python

Python Le tuple sono raccolte di elementi immutabili che seguono una sequenza ordinata. PythonLa funzione sort di può essere utilizzata per ordinare un elenco di tuple utilizzando una funzione personalizzata e un'espressione lambda.

Una funzione personalizzata può essere creata senza un nome e rappresentata da un'espressione lambda. Di seguito è riportata la sintassi per l'espressione lambda: –

Sintassi:

Lambda arguments: expression

La sintassi sopra è equivalente al codice Python seguente:

def name (arguments):
return expression

Ecco un esempio di tupla e funzione personalizzata per illustrare come una funzione di ordinamento con parametri chiave aiuta a ordinare gli elementi in una tupla:-

Python codice:

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)

Produzione:

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

Spiegazione del codice:

  • Il parametro reverse è definito come true per ordinare la tupla in ordine decrescente.
  • La funzione personalizzata accetta il secondo elemento della tupla.
  • Questo viene utilizzato come chiave della funzione di ordinamento.

Diamo un'occhiata all'esempio seguente che utilizza l'espressione lambda:

Python codice:

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)

Produzione:

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

Spiegazione:

  • L'espressione lambda ti aiuta a ordinare gli elementi della tupla dal più alto al più basso con la chiave come secondo elemento della tupla.
  • Il programma controllerà il valore più alto del secondo elemento della tupla.

Ordinamento degli elementi dell'elenco utilizzando Len come parametro chiave

Len è una funzione integrata che determina la lunghezza dell'articolo. La lunghezza rilevata può essere utilizzata per l'indicizzazione nella funzione di ordinamento. Per fare ciò, assegniamo Len al file Python parametro chiave della funzione di ordinamento.

Le seguenti Python Il codice illustra come utilizzare la funzione Len con la funzione di ordinamento.

Python Codice:

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

Produzione:

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

Spiegazione del codice:

Ordinamento degli elementi dell'elenco utilizzando Len

  • La lunghezza dell'elemento diventa un indice per il parametro chiave per disporre l'elenco in ordine crescente.
  • La funzione Len stima la lunghezza di ciascun elemento presente nella lista base.
  • Mantiene l'elemento più corto sul lato sinistro e l'elemento più grande sul lato destro.
  • Qui, le parole alto e java hanno una lunghezza di 4, che sono disposte per prime nell'elenco, seguite da Guru99, che ha una lunghezza di 6.

Questo esempio illustra il concetto del parametro inverso nella funzione di ordinamento come mostrato di seguito: –

Python Codice:

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

Produzione:

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

Ordinamento degli elementi dell'elenco utilizzando la funzione definita dall'utente come parametro chiave

È inoltre possibile utilizzare una funzione definita dall'utente come parametro chiave per ordinare un elenco. Ecco un esempio: –

Python Codice:

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)

Produzione:

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

Spiegazione del codice:

  • Viene creata una funzione definita dall'utente per restituire l'anno
  • Il parametro chiave accetta come criterio una funzione definita dall'utente.
  • La funzione di ordinamento organizzerà l'elenco in ordine crescente in base al valore dell'elemento "anno".

Differenza tra il metodo sort e il metodo sorted in Python

Prima di riassumere le differenze, comprendiamo la sintassi del metodo Sorted.

Python Sintassi:

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

Spiegazione del codice:

  • La funzione sorted ordina l'elenco in ordine crescente o decrescente.
  • La funzione accetta tre parametri, di cui due parametri sono di tipo facoltativo e un parametro è del tipo richiesto.
  • Il parametro list_name è obbligatorio quando si utilizza il metodo Sorted.
  • Il metodo Sorted può accettare qualsiasi tipo di elenco iterabile come input.
  • I parametri chiave e i parametri inversi sono parametri facoltativi nel metodo ordinato in Python.

Ecco un esempio di utilizzo della funzione sort e sorted in Python come mostrato di seguito: –

Python codice:

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

Produzione:

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

Spiegazione del codice:

  • L'elenco originale viene passato come parametro obbligatorio per la funzione ordinata.
  • Il metodo Sorted restituisce un nuovo elenco oltre all'elenco originale.
  • Poiché al metodo ordinato non vengono passati parametri aggiuntivi, per impostazione predefinita il nuovo elenco viene ordinato in ordine crescente.
  • La funzione di ordinamento non crea alcun nuovo elenco.

Di seguito sono riportati i punti sulle principali somiglianze e differenze: –

Funzione ordinata Funzione di ordinamento
Funzione ordinata in Python è una funzione integrata che accetta nome_elenco come parametro obbligatorio. La funzione di ordinamento non accetta l'elenco originale come parametro.
Il metodo ordinato restituisce un nuovo elenco La funzione di ordinamento non restituisce un nuovo elenco
La funzione ordinata dovrebbe essere utilizzata per gli elenchi iterabili La funzione di ordinamento dovrebbe essere utilizzata per elenchi non iterabili.
Non modifica l'elenco originale e ci consente di conservare i dati originali. La funzione di ordinamento modifica la funzione originale e quindi occupa meno spazio di memoria

Quando utilizzare il metodo ordinato o il metodo di ordinamento?

Prendiamo un esempio che richiede l'ordinamento dei dati di gara. Il programma utilizza il numero di pettorale e il tempo impiegato in secondi per terminare la gara.

Python codice:

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)

Produzione:

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

Spiegazione del codice:

  • L'elenco di base viene ordinato utilizzando sia la funzione di ordinamento che la funzione di ordinamento.
  • L'elenco di base viene perso quando viene applicata la funzione di ordinamento.
  • La funzione di ordinamento non deve essere applicata al set di dati originale. Dovrebbe essere utilizzato quando è disponibile una versione di copia del set di dati originale.
  • La funzione Ordinata mantiene l'elenco originale. Non lo sovrascrive.
  • Ciò offre una migliore tracciabilità e una gestione efficace dei dati.

Conclusione

  • La funzione sort aiuta a ordinare un elenco numerico e di stringhe in Python.
  • Può anche aiutare nell'ordinamento delle tuple.
  • Reverse e key sono parametri opzionali della funzione.
  • Se è necessario avere un elenco separato e contemporaneamente l'elenco originale, è necessario utilizzare la funzione ordinata, altrimenti è necessario utilizzare la funzione di ordinamento per ottenere un utilizzo ottimizzato della memoria.