Ordinamento elenco Python ()

Il metodo sort () ordina gli elementi di una data lista in uno specifico ordine ascendente o discendente.

La sintassi del sort()metodo è:

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

In alternativa, puoi anche usare la funzione di ordinamento () incorporata di Python per lo stesso scopo.

 ordinato (elenco, chiave =…, inverso =…)

Nota: la differenza più semplice tra sort()e sorted()è: sort()cambia l'elenco direttamente e non restituisce alcun valore, mentre sorted()non cambia l'elenco e restituisce l'elenco ordinato.

parametri sort ()

Per impostazione predefinita, sort()non richiede parametri aggiuntivi. Tuttavia, ha due parametri opzionali:

  • reverse - Se True, l'elenco ordinato è invertito (o ordinato in ordine decrescente)
  • chiave - funzione che funge da chiave per il confronto dell'ordinamento

Valore restituito da sort ()

Il sort()metodo non restituisce alcun valore. Piuttosto, cambia l'elenco originale.

Se si desidera che una funzione restituisca l'elenco ordinato anziché modificare l'elenco originale, utilizzare sorted().

Esempio 1: ordina un determinato elenco

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Produzione

 Elenco ordinato: ('a', 'e', ​​'i', 'o', 'u')

Ordina in ordine decrescente

Il sort()metodo accetta un reverseparametro come argomento opzionale.

L'impostazione reverse = Trueordina l'elenco in ordine decrescente.

 list.sort(reverse=True)

In alternativa sorted(), puoi usare il codice seguente.

 sorted(list, reverse=True)

Esempio 2: ordina l'elenco in ordine decrescente

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Produzione

 Elenco ordinato (in ordine discendente): ('u', 'o', 'i', 'e', ​​'a')

Ordina con funzione personalizzata usando il tasto

Se desideri la tua implementazione per l'ordinamento, il sort()metodo accetta anche una keyfunzione come parametro opzionale.

In base ai risultati della funzione chiave, è possibile ordinare l'elenco fornito.

 list.sort(key=len)

In alternativa per ordinati:

 sorted(list, key=len)

Ecco lenla funzione incorporata di Python per contare la lunghezza di un elemento.

L'elenco è ordinato in base alla lunghezza di ogni elemento, dal conteggio più basso al più alto.

Sappiamo che una tupla viene ordinata utilizzando il suo primo parametro per impostazione predefinita. Diamo un'occhiata a come personalizzare il sort()metodo per ordinare utilizzando il secondo elemento.

Esempio 3: ordinare l'elenco utilizzando il tasto

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Produzione

 Elenco ordinato: ((4, 1), (2, 2), (1, 3), (3, 4))

Facciamo un altro esempio. Supponiamo di avere un elenco di informazioni sui dipendenti di un ufficio in cui ogni elemento è un dizionario.

Possiamo ordinare l'elenco nel modo seguente:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Produzione

(('Nome': 'Alan Turing', 'età': 25, 'stipendio': 10000), ('Nome': 'John Hopkins', 'età': 18, 'stipendio': 1000), ('Nome ':' Mikhail Tal ',' età ': 40,' stipendio ': 15000), (' Nome ':' Sharon Lin ',' età ': 30,' stipendio ': 8000)) ((' Nome ':' John Hopkins "," età ": 18," stipendio ": 1000), (" Nome ":" Alan Turing "," età ": 25," stipendio ": 10000), (" Nome ":" Sharon Lin ", 'età': 30, 'stipendio': 8000), ('Nome': 'Mikhail Tal', 'età': 40, 'stipendio': 15000)) (('Nome': 'Mikhail Tal', 'età' : 40, "stipendio": 15000), ("Nome": "Alan Turing", "età": 25, "stipendio": 10000), ("Nome ":" Sharon Lin "," età ": 30," stipendio ": 8000), (" Nome ":" John Hopkins "," età ": 18," stipendio ": 1000))

Qui, per il primo caso, la nostra funzione personalizzata restituisce il nome di ogni dipendente. Poiché il nome è a string, Python per impostazione predefinita lo ordina utilizzando l'ordine alfabetico.

Nel secondo caso, intviene restituita age ( ) e ordinata in ordine crescente.

Per il terzo caso, la funzione restituisce salary ( int) e viene ordinata in ordine decrescente utilizzando reverse = True.

È buona norma utilizzare la funzione lambda quando la funzione può essere riassunta in una riga. Quindi, possiamo anche scrivere il programma sopra come:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Produzione

(('Nome': 'Alan Turing', 'età': 25, 'stipendio': 10000), ('Nome': 'John Hopkins', 'età': 18, 'stipendio': 1000), ('Nome ':' Mikhail Tal ',' età ': 40,' stipendio ': 15000), (' Nome ':' Sharon Lin ',' età ': 30,' stipendio ': 8000)) ((' Nome ':' John Hopkins "," età ": 18," stipendio ": 1000), (" Nome ":" Alan Turing "," età ": 25," stipendio ": 10000), (" Nome ":" Sharon Lin ", 'età': 30, 'stipendio': 8000), ('Nome': 'Mikhail Tal', 'età': 40, 'stipendio': 15000)) (('Nome': 'Mikhail Tal', 'età' : 40, "stipendio": 15000), ("Nome": "Alan Turing", "età": 25, "stipendio": 10000), ("Nome ":" Sharon Lin "," età ": 30," stipendio ": 8000), (" Nome ":" John Hopkins "," età ": 18," stipendio ": 1000))

Per saperne di più sulle funzioni lambda, visita Python Lambda Functions.

Articoli interessanti...