Cum se sortează listele în Python

How Sort Lists Python



Acest articol va acoperi un ghid privind listele de sortare în Python. Un obiect de listă Python este o colecție de unul sau mai multe elemente separate prin virgulă. Este un obiect iterabil și elementele sale pot fi accesate iterând peste listă folosind instrucțiuni de buclă și alte expresii. Puteți sorta o listă Python folosind metode de sortare și sortare, ambele fiind explicate în articol. Toate mostrele de cod din acest articol sunt testate cu Python 3.9.5 în Ubuntu 21.04.

Metoda de sortare

Metoda de sortare sortează o listă în loc. Cu alte cuvinte, va modifica obiectul listei pe care urmează să-l sortați și să-i reordonați elementul. Dacă nu aveți nevoie de lista originală și nu vă deranjează ca lista să-și schimbe ordinea elementelor în loc, aceasta este cea mai eficientă metodă din Python pentru a sorta o listă. Luați în considerare acest exemplu:







the= [2, 8, 6, 4]

.fel()

imprimare (the)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:



[2, 4, 6, 8]

Prima declarație din eșantionul de cod definește o listă. Apoi, metoda de sortare este apelată pe listă. Când tipăriți lista, puteți vedea că ordinea listei originale a fost modificată.



În mod implicit, Python sortează o listă în ordine crescătoare. Dacă doriți să sortați o listă în ordine descrescătoare, utilizați metoda inversă, așa cum se arată în exemplul de cod de mai jos:





the= [2, 8, 6, 4]

.fel()

.verso()

imprimare (the)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

[8, 6, 4, 2]

Metoda inversă modifică, de asemenea, o listă Python în loc, fără a crea o listă nouă.



Dacă lista dvs. conține elemente de șir, apelarea metodei de sortare pe ea o va ordona alfabetic unde simbolurile și numerele sunt ordonate mai întâi. Aruncați o privire la exemplul de cod de mai jos:

the= ['s', 'la', 'Cu', „4”, „#”]

.fel()
imprimare (the)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

[„#”, „4”, 'la', 's', 'Cu']

De asemenea, puteți utiliza metoda inversă pe o listă care conține elemente de șir.

the= ['s', 'la', 'Cu', „4”, „#”]

.fel()

.verso()

imprimare (the)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

['Cu', 's', 'la', „4”, „#”]

Metoda sortată

Metoda sortată sortează, de asemenea, o listă Python, în același mod ca și metoda sortare. Cu toate acestea, în loc să modificați lista originală, aceasta returnează o listă nouă, astfel încât lista dvs. originală să fie lăsată neatinsă în cazul în care doriți să o refolosiți. Luați în considerare codul de mai jos:

list1= ['s', 'la', 'Cu', „4”, „#”]

list2= sortate(list1)

imprimare (list1,list2)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

['s', 'la', 'Cu', „4”, „#”] [„#”, „4”, 'la', 's', 'Cu']

Puteți vedea în rezultat că list1 este intact și list2 are acum elemente sortate. De asemenea, puteți utiliza metoda inversă din lista2 pentru a-i modifica metodologia de ordonare.

Argument invers

Puteți utiliza argumentul invers ca alternativă la funcția inversă atât în ​​metodele de sortare, cât și în cele de sortare pentru a obține o listă sortată în ordine descrescătoare. Doar furnizați-i o valoare Adevărată pentru a modifica ordinea de sortare:

list1= ['s', 'la', 'Cu', „4”, „#”]

list2= sortate(list1,verso=Adevărat)

imprimare (list1,list2)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

['s', 'la', 'Cu', „4”, „#”] ['Cu', 's', 'la', „4”, „#”]

Utilizarea funcției cheie pentru a specifica propria logică pentru sortarea elementelor unei liste

În ambele metode de sortare și sortare, puteți specifica un argument cheie suplimentar care ia ca funcție o funcție apelabilă. Acestui argument cheie i se poate atribui o funcție existentă din module Python încorporate sau puteți furniza propria funcție cu logică personalizată. Aruncați o privire la exemplul de cod de mai jos:

list1= [„abcde”, „xyz”, „ijkl”]

list2= sortate(list1,cheie=len)

imprimare (list1,list2)

list1.fel(cheie=len)

imprimare (list1)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

[„abcde”, „xyz”, „ijkl”] [„xyz”, „ijkl”, „abcde”]

[„xyz”, „ijkl”, „abcde”]

Eșantionul de cod ilustrează utilizarea argumentelor cheie atât în ​​metodele de sortare, cât și în cele de sortare. Funcția furnizată acestuia se numește len care determină lungimea unui obiect șir sau a unui iterabil. Funcția sau apelabil ar trebui să ia inițial un singur argument. Îl atribuiți argumentului cheie fără a utiliza paranteze. Funcția apelabilă furnizată argumentului cheie este apelată la fiecare element al listei. Valorile returnate din această metodă apelabilă sunt apoi utilizate ca cheie pentru sortarea listei. Prin urmare, furnizarea funcției len argumentului cheie sortează elementele unei liste în ordinea lungimii lor, adică de la cea mai scurtă la cea mai lungă. După cum sa menționat anterior, puteți folosi întotdeauna metoda inversă pentru a inversa metodologia de sortare.

Puteți utiliza, de asemenea, propria funcție personalizată sau funcții lambda cu o linie care returnează valoarea unei singure expresii. Aruncați o privire asupra eșantionului de cod de mai jos, unde o listă conține tupluri din inventarul curent de lazi de fructe:

list1= [('Mango', 99), ('portocale', 51), ('banană', 76)]

list1.fel(cheie=lambdainventar: inventar[1])

imprimare (list1)

După ce rulați exemplul de cod de mai sus, ar trebui să obțineți următoarea ieșire:

[('portocale', 51), ('banană', 76), ('Mango', 99)]

Funcția lambda este furnizată cu un inventar de argumente, care este fiecare element al listei sub formă de tuplu. Apoi returnează al doilea element al fiecărui tuplu ca cheie (la indexul 1). Funcția de sortare sortează apoi toate tuplurile după al doilea element în ordine crescătoare. De asemenea, puteți utiliza funcția inversă sau argumentul invers pe rezultatul final pentru a inversa ordinea de sortare.

Concluzie

Acestea sunt câteva modalități prin care puteți sorta conținutul unei liste iterabile în Python. Argumentul cheie vă permite să scrieți propria logică de sortare personalizată, potrivită pentru aplicații care pot avea nevoi diferite de metodele de sortare încorporate.