Kuidas sorteerida loendeid Pythonis

How Sort Lists Python



See artikkel hõlmab Pythoni loendite sortimise juhendit. Pythoni loendi objekt on ühe või mitme komaga eraldatud üksuse kogum. See on korduv objekt ja selle elementidele pääseb juurde, loendit kordades, kasutades silmuste avaldusi ja muid avaldisi. Pythoni loendi saate sortida sortimis- ja sorteerimismeetodite abil, neid mõlemaid on artiklis selgitatud. Kõik selle artikli koodinäidised on testitud Python 3.9.5 -ga Ubuntu 21.04 -s.

Sortimismeetod

Sortimismeetod sorteerib loendi kohapeal. Teisisõnu, see muudab loendi objekti, mida kavatsete selle elementi sortida ja ümber korraldada. Kui te ei vaja esialgset loendit ega pahanda, et loend muudab oma elementide järjekorda, on see Pythonis kõige tõhusam meetod loendi sortimiseks. Mõelge sellele näitele:







the= [2, 8, 6, 4]

.sorteerima()

printida (the)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:



[2, 4, 6, 8]

Koodinäidise esimene lause määratleb loendi. Järgmisena kutsutakse loendisse sortimismeetod. Loendi printimisel näete, et algse loendi järjekorda on muudetud.



Vaikimisi sorteerib Python loendi kasvavas järjekorras. Kui soovite loendit sortida kahanevas järjekorras, kasutage vastupidist meetodit, nagu on näidatud alloleval koodinäidisel:





the= [2, 8, 6, 4]

.sorteerima()

.tagurpidi()

printida (the)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

[8, 6, 4, 2]

Pöördmeetod muudab ka Pythoni loendi kohapeal ilma uut loendit loomata.



Kui teie loend sisaldab stringielemente, siis sortimismeetodile helistamine korraldab selle tähestikulises järjekorras, kus sümbolid ja numbrid on järjestatud. Vaadake allolevat koodinäidist:

the= ['s', '', 'Koos', '4', '#']

.sorteerima()
printida (the)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

['#', '4', '', 's', 'Koos']

Stringielemente sisaldavas loendis saate kasutada ka vastupidist meetodit.

the= ['s', '', 'Koos', '4', '#']

.sorteerima()

.tagurpidi()

printida (the)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

['Koos', 's', '', '4', '#']

Sorteeritud meetod

Sorteeritud meetod sorteerib ka Pythoni loendi samamoodi nagu sortimismeetod. Selle asemel, et muuta esialgset loendit, tagastab see uue loendi, nii et teie esialgne loend jääb puutumata juhuks, kui soovite seda uuesti kasutada. Mõelge allolevale koodile:

nimekiri 1= ['s', '', 'Koos', '4', '#']

nimekiri2= sorteeritud(nimekiri 1)

printida (nimekiri 1,nimekiri2)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

['s', '', 'Koos', '4', '#'] ['#', '4', '', 's', 'Koos']

Väljundist näete, et loend1 on puutumatu ja loend2 sisaldab nüüd sorteeritud elemente. Võite kasutada ka vastupidist meetodit loendis2, et muuta selle tellimismetoodikat.

Vastupidine argument

Saate kasutada vastupidist argumenti alternatiivina tagasipööramisfunktsioonile nii sortimis- kui ka sortimismeetodites, et saada sorteeritud loend kahanevas järjekorras. Sortimisjärjestuse muutmiseks sisestage sellele tõeline väärtus:

nimekiri 1= ['s', '', 'Koos', '4', '#']

nimekiri2= sorteeritud(nimekiri 1,tagurpidi=Tõsi)

printida (nimekiri 1,nimekiri2)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

['s', '', 'Koos', '4', '#'] ['Koos', 's', '', '4', '#']

Võtmefunktsiooni kasutamine loendi elementide sortimiseks loogika määramiseks

Nii sortimis- kui ka sortimismeetodite puhul saate määrata täiendava võtmeargumendi, mille väärtuseks on esitatav funktsioon. Sellele võtmeargumendile saab määrata olemasoleva funktsiooni sisseehitatud Pythoni moodulitest või saate oma funktsiooni kohandatud loogikaga varustada. Vaadake allolevat koodinäidist:

nimekiri 1= ['abcde', 'xyz', 'ijkl']

nimekiri2= sorteeritud(nimekiri 1,võti=len)

printida (nimekiri 1,nimekiri2)

nimekiri 1.sorteerima(võti=len)

printida (nimekiri 1)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']

['xyz', 'ijkl', 'abcde']

Koodinäide illustreerib võtmeargumendi kasutamist nii sorteeritud kui ka sortimismeetodites. Sellele pakutavat funktsiooni nimetatakse leniks, mis määrab stringi objekti pikkuse või kordatava. Funktsioon või esitatav peaks algselt sisaldama ainult ühte argumenti. Selle määrate võtmeargumendile ilma traksid kasutamata. Põhiargumendile esitatud helistamisfunktsiooni kutsutakse üles loendi igale elemendile. Sellest kutsutavast meetodist tagastatud väärtusi kasutatakse seejärel võtmena loendi sortimiseks. Seega sorteerib võtmeargumendile len -funktsiooni andmine loendi elemendid nende pikkuse järjekorras, st lühimast pikimani. Nagu varem öeldud, saate sorteerimismetoodika ümberpööramiseks alati kasutada vastupidist meetodit.

Võite kasutada ka oma kohandatud funktsiooni või ühe joonega lambdafunktsioone, mis tagastavad ühe avaldise väärtuse. Vaadake allolevat koodinäidist, kus loendis on puuviljakastide praeguse inventari nimekirjad:

nimekiri 1= [('mango', 99), ('oranž', 51), ('banaan', 76)]

nimekiri 1.sorteerima(võti=lambdainventuur: inventuur[1])

printida (nimekiri 1)

Pärast ülaltoodud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('oranž', 51), ('banaan', 76), ('mango', 99)]

Funktsioon lambda on varustatud argumentide inventuuriga, mis on loendi iga element tüübivormis. Seejärel tagastab see iga tüübi teise elemendi võtmena (indeksis 1). Sortimisfunktsioon sorteerib seejärel kõik kaardid teise elemendi järgi kasvavas järjekorras. Sorteerimisjärjestuse ümberpööramiseks võite lõpptulemusel kasutada ka vastupidist funktsiooni või vastupidist argumenti.

Järeldus

Need on mõned viisid, mille abil saate Pythonis korduva loendi sisu sortida. Põhiargument võimaldab teil kirjutada oma kohandatud sortimisloogika, mis sobib rakendustele, millel võivad olla erinevad vajadused kui sisseehitatud sortimismeetoditel.