Python Elenca sort() con esempi
⚡ Riepilogo intelligente
Python La funzione `list sort()` ordina gli elementi di una lista sul posto, in ordine crescente per impostazione predefinita o decrescente tramite il parametro `reverse`, mentre una funzione chiave opzionale ordina in base a criteri personalizzati come lunghezza, campi della tupla o funzioni definite dall'utente.
In cosa consiste il metodo sort() Python?
La funzione sort() in Python Consente di ordinare un elenco in ordine crescente o decrescente. Può essere utilizzato per ordinare elenchi numerici, tuple e elenchi di stringhe. Non crea un elenco separato, ma modifica o ordina quello originale.
Sintassi del metodo Sort in Python
La funzione di ordinamento ha la seguente sintassi:
List.sort(key=…, reverse=…)
La funzione di ordinamento ha due parametri opzionali, ovvero:
- Tasto: - Viene utilizzato per ordinare una funzione in base a un criterio di ordinamento.
- Reverse: – accetta 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']
Code Spiegazione:
- 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.
È possibile creare una funzione personalizzata senza nome, rappresentandola tramite un'espressione lambda. Di seguito è riportata la sintassi per un'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 di funzione personalizzata per illustrare come una funzione di ordinamento con parametri chiave aiuti 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)]
Code Spiegazione:
- 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'elemento. La lunghezza determinata può essere utilizzata per l'indicizzazione nella funzione di ordinamento. Per fare ciò, assegniamo Len al Python parametro chiave della funzione di ordinamento.
Le seguenti Python Il codice illustra come utilizzare la funzione Len con la funzione di ordinamento.
Python Code:
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']
Code Spiegazione:
- 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 Code:
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
È possibile utilizzare anche una funzione definita dall'utente come parametro chiave per ordinare un elenco. Ecco un esempio:
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)
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}]
Code Spiegazione:
- 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
Dopo aver esaminato gli esempi precedenti, è utile confrontare direttamente i due strumenti di ordinamento. Prima di riassumere le differenze, analizziamo la sintassi del metodo Sorted.
Python Sintassi:
sorted (list_name, reverse=…., key=..)
Code Spiegazione:
- 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:
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
Code Spiegazione:
- 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 vengono illustrati i punti chiave relativi a 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)]
Code Spiegazione:
- 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 soluzione migliore tracFacilità e gestione efficace dei dati.


