Come ordinare gli elenchi in Python

Come ordinare gli elenchi in Python

Questo articolo coprirà una guida sugli elenchi di smistamento in Python. Un oggetto Elenco Python è una raccolta di uno o più elementi separati da virgola. È un oggetto "iterabile" e è possibile accedere ai suoi elementi iterando nell'elenco usando le dichiarazioni di loop e altre espressioni. Puoi ordinare un elenco di Python usando metodi "ordin" e "ordinati", entrambi sono spiegati nell'articolo. Tutti i campioni di codice in questo articolo sono testati con Python 3.9.5 in Ubuntu 21.04.

Metodo di ordinamento

Il metodo di ordinamento ordina un elenco "sul posto". In altre parole, modificherà l'oggetto elenco che stai per ordinare e riordinare il suo elemento. Se non hai bisogno dell'elenco originale e non importa l'elenco che modifica il suo ordine di elementi "sul posto", questo è il metodo più efficiente di Python per ordinare un elenco. Considera questo esempio:

L = [2, 8, 6, 4]
l.ordinare()
Stampa (L)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

[2, 4, 6, 8]

La prima istruzione nel campione del codice definisce un elenco. Successivamente, il metodo "ordinamento" viene chiamato nell'elenco. Quando si stampano l'elenco, puoi vedere che l'ordine dell'elenco originale è stato modificato.

Per impostazione predefinita, Python ordina un elenco in ordine crescente. Se si desidera ordinare un elenco in ordine decrescente, utilizzare il metodo "inverso", come mostrato nel campione di codice di seguito:

L = [2, 8, 6, 4]
l.ordinare()
l.inversione()
Stampa (L)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

[8, 6, 4, 2]

Il metodo "Reverse" modifica anche un elenco di Python "sul posto" senza creare un nuovo elenco.

Se l'elenco contiene elementi di stringa, chiamare il metodo "ordina" su di esso lo ordinerà in ordine alfabetico dove vengono ordinati i simboli e i numeri prima. Dai un'occhiata al campione di codice di seguito:

l = ["s", "a", "z", "4", "#"]
l.ordinare()
Stampa (L)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

['#', '4', 'a', 's', 'z']

È inoltre possibile utilizzare il metodo inverso in un elenco contenente elementi di stringa.

l = ["s", "a", "z", "4", "#"]
l.ordinare()
l.inversione()
Stampa (L)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

['z', 's', 'a', '4', '#']

Metodo ordinato

Il metodo ordinato ordina anche un elenco di Python, allo stesso modo del metodo "ordina". Tuttavia, invece di modificare l'elenco originale, restituisce un nuovo elenco in modo che l'elenco originale venga intatto nel caso in cui desideri riutilizzarlo. Considera il codice seguente:

list1 = ["s", "a", "z", "4", "#"]
list2 = ordinato (list1)
Stampa (List1, List2)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

['s', 'a', 'z', '4', '#'] ['#', '4', 'a', 's', 'z'

Puoi vedere nell'output che "List1" è intatto e "List2" ora ha ordinato elementi. Puoi anche utilizzare il metodo "Reverse" su "List2" per modificare la sua metodologia di ordinazione.

Argomento inverso

È possibile utilizzare l'argomento "inverso" come alternativa alla funzione inversa in entrambi i metodi "ordina" e "ordina" per ottenere un elenco ordinato in ordine decrescente. Basta fornirgli un valore "vero" per modificare l'ordine di smistamento:

list1 = ["s", "a", "z", "4", "#"]
list2 = ordinati (list1, reverse = true)
Stampa (List1, List2)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

['s', 'a', 'z', '4', '#'] ['z', 's', 'a', '4', '#'

Utilizzo della funzione chiave per specificare la propria logica per l'ordinamento degli elementi di un elenco

In entrambi i metodi "ordina" e "ordinati", è possibile specificare un ulteriore argomento "chiave" che prende una funzione richiamabile come valore. A questo argomento chiave può essere assegnata una funzione esistente dai moduli Python integrati o puoi fornire la propria funzione con una logica personalizzata. Dai un'occhiata al campione di codice di seguito:

list1 = ["abcde", "xyz", "ijkl"]
list2 = ordinati (list1, key = len)
Stampa (List1, List2)
List1.Ordina (chiave = len)
Stampa (List1)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

['Abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde'
['Xyz', 'Ijkl', 'Abcde']

Il campione del codice illustra l'utilizzo dell'argomento "chiave" nei metodi "ordinati" e "ordina". La funzione fornita è chiamata "len" che determina la lunghezza di un oggetto stringa o un iterabile. La funzione o la calma dovrebbero originariamente prendere solo un argomento. Lo assegni all'argomento "chiave" senza usare le parentesi graffe. La funzione richiamabile fornita all'argomento "chiave" è chiamata su ciascun elemento dell'elenco. I valori restituiti da questo metodo richiamabile vengono quindi utilizzati come chiave per ordinare l'elenco. Quindi, fornendo la funzione "Len" all'argomento "chiave" ordina gli elementi di un elenco nell'ordine della loro lunghezza, cioè dal più breve al più lungo. Come affermato in precedenza, è sempre possibile utilizzare il metodo "inverso" per invertire la metodologia di ordinamento.

Puoi anche utilizzare la tua funzione personalizzata o le funzioni Lambda One-Liner che restituiscono il valore di una singola espressione. Dai un'occhiata al campione di codice qui sotto in cui un elenco ha tuple di inventario attuale delle casse di frutta:

list1 = [("mango", 99), ("arancione", 51), ("banana", 76)]
List1.Ordine (key = lambda Inventory: Inventory [1])
Stampa (List1)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

[('Orange', 51), ('Banana', 76), ('Mango', 99)]

La funzione "lambda" è fornita con un argomento "inventario", che è ogni elemento dell'elenco in forma di tupla. Restituisce quindi il secondo elemento di ciascuna tupla come chiave (all'indice 1). La funzione di ordinamento quindi ordina tutte le tuple per il suo secondo elemento in ordine crescente. È inoltre possibile utilizzare la funzione "inversa" o l'argomento "inverso" sul risultato finale per invertire l'ordine di ordinamento.

Conclusione

Questi sono alcuni modi usando il quale è possibile ordinare il contenuto di un elenco iterabile in Python. L'argomento "chiave" ti consente di scrivere la tua logica di ordinamento personalizzata, adatta per applicazioni che potrebbero avere esigenze diverse rispetto ai metodi di ordinamento integrati.