Kā kārtot sarakstus Python

How Sort Lists Python



Šis raksts aptvers ceļvedi par sarakstu kārtošanu Python. Python saraksta objekts ir viena vai vairāku ar komatu atdalītu vienumu kolekcija. Tas ir atkārtojams objekts, un tā elementiem var piekļūt, atkārtojot sarakstu, izmantojot cilpas paziņojumus un citas izteiksmes. Jūs varat kārtot Python sarakstu, izmantojot kārtošanas un kārtošanas metodes, abas no tām ir izskaidrotas rakstā. Visi šajā rakstā iekļautie koda paraugi tiek pārbaudīti ar Python 3.9.5 operētājsistēmā Ubuntu 21.04.

Kārtošanas metode

Kārtošanas metode kārto sarakstu vietā. Citiem vārdiem sakot, tas mainīs saraksta objektu, kuru plānojat kārtot, un pārkārtot tā elementu. Ja jums nav nepieciešams sākotnējais saraksts un jums nav iebildumu, ka sarakstā tiek mainīta elementu secība, šī ir visefektīvākā Python metode saraksta kārtošanai. Apsveriet šo piemēru:







un= [2, 8, 6, 4]

.kārtot()

drukāt (un)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:



[2, 4, 6, 8]

Pirmais paziņojums koda paraugā nosaka sarakstu. Tālāk sarakstā tiek izsaukta kārtošanas metode. Drukājot sarakstu, varat redzēt, ka sākotnējā saraksta secība ir mainīta.



Pēc noklusējuma Python kārto sarakstu augošā secībā. Ja vēlaties kārtot sarakstu dilstošā secībā, izmantojiet reverso metodi, kā parādīts zemāk esošajā koda paraugā:





un= [2, 8, 6, 4]

.kārtot()

.otrādi()

drukāt (un)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

[8, 6, 4, 2]

Reversā metode arī maina Python sarakstu, neveidojot jaunu sarakstu.



Ja jūsu sarakstā ir virknes elementi, izsaucot kārtošanas metodi, tas tiks sakārtots alfabēta secībā, kur simboli un cipari tiek sakārtoti vispirms. Apskatiet tālāk redzamo koda paraugu:

un= ['s', 'uz', 'Ar', '4', '#']

.kārtot()
drukāt (un)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

['#', '4', 'uz', 's', 'Ar']

Reverso metodi varat izmantot arī sarakstā, kurā ir virknes elementi.

un= ['s', 'uz', 'Ar', '4', '#']

.kārtot()

.otrādi()

drukāt (un)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

['Ar', 's', 'uz', '4', '#']

Šķirotā metode

Kārtotā metode kārto arī Python sarakstu tādā pašā veidā kā kārtošanas metode. Tomēr tā vietā, lai mainītu sākotnējo sarakstu, tas atgriež jaunu sarakstu, lai sākotnējais saraksts netiktu atstāts neskarts, ja vēlaties to izmantot atkārtoti. Apsveriet tālāk norādīto kodu.

saraksts1= ['s', 'uz', 'Ar', '4', '#']

saraksts2= sakārtoti(saraksts1)

drukāt (saraksts1,saraksts2)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

['s', 'uz', 'Ar', '4', '#'] ['#', '4', 'uz', 's', 'Ar']

Rezultātā var redzēt, ka saraksts1 ir neskarts un sarakstā2 tagad ir sakārtoti elementi. Varat arī izmantot reverso metodi sarakstā2, lai mainītu pasūtīšanas metodiku.

Apgrieztais arguments

Apvērsto argumentu varat izmantot kā alternatīvu reversai funkcijai gan kārtošanas, gan kārtošanas metodēs, lai iegūtu sakārtotu sarakstu dilstošā secībā. Vienkārši norādiet patieso vērtību, lai mainītu kārtošanas secību:

saraksts1= ['s', 'uz', 'Ar', '4', '#']

saraksts2= sakārtoti(saraksts1,otrādi=Taisnība)

drukāt (saraksts1,saraksts2)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

['s', 'uz', 'Ar', '4', '#'] ['Ar', 's', 'uz', '4', '#']

Taustiņu funkcijas izmantošana, lai norādītu savu loģiku saraksta elementu kārtošanai

Gan kārtošanas, gan kārtošanas metodēs varat norādīt papildu galveno argumentu, kura vērtība tiek uzskatīta par izsaucamu funkciju. Šim galvenajam argumentam var piešķirt esošu funkciju no iebūvētiem Python moduļiem, vai arī jūs varat nodrošināt savu funkciju ar pielāgotu loģiku. Apskatiet tālāk redzamo koda paraugu:

saraksts1= ['abcde', 'xyz', 'ijkl']

saraksts2= sakārtoti(saraksts1,taustiņu=len)

drukāt (saraksts1,saraksts2)

saraksts1.kārtot(taustiņu=len)

drukāt (saraksts1)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

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

Koda paraugs parāda galveno argumentu izmantošanu gan sakārtotajās, gan kārtošanas metodēs. Tam piegādāto funkciju sauc par len, kas nosaka virknes objekta garumu vai atkārtojamu. Funkcijai vai izsaucamajam sākotnēji vajadzētu būt tikai vienam argumentam. Jūs to piešķirat galvenajam argumentam, neizmantojot breketes. Atsaucamā funkcija, kas tiek piegādāta galvenajam argumentam, tiek izsaukta katram saraksta elementam. No šīs izsaucamās metodes atgrieztās vērtības tiek izmantotas kā atslēga saraksta kārtošanai. Tādējādi, sniedzot len ​​funkciju galvenajam argumentam, saraksta elementi tiek sakārtoti to garuma secībā, tas ir, no īsākā līdz garākajam. Kā minēts iepriekš, jūs vienmēr varat izmantot reverso metodi, lai mainītu šķirošanas metodiku.

Varat arī izmantot savu pielāgoto funkciju vai vienas rindas lambda funkcijas, kas atgriež vienas izteiksmes vērtību. Apskatiet zemāk esošo koda paraugu, kur sarakstā ir augļu kastīšu pašreizējā inventāra kopas:

saraksts1= [('mango', 99), ('apelsīns', 51), ('banāns', 76)]

saraksts1.kārtot(taustiņu=lambdainventārs: inventārs[1])

drukāt (saraksts1)

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

[('apelsīns', 51), ('banāns', 76), ('mango', 99)]

Funkcijai lambda tiek piegādāts argumentu inventārs, kas ir katrs saraksta elements kartotēkas formā. Pēc tam tas atgriež katras kopas otro elementu kā atslēgu (1. indeksā). Kārtošanas funkcija pēc tam sakārto visus ierakstus pēc otrā elementa augošā secībā. Jūs varat arī izmantot apgrieztās funkcijas vai apgrieztā argumenta rezultātu, lai mainītu kārtošanas secību.

Secinājums

Šie ir daži veidi, kā Python var kārtot atkārtojamā saraksta saturu. Galvenais arguments ļauj rakstīt savu pielāgoto šķirošanas loģiku, kas piemērota lietojumprogrammām, kurām var būt atšķirīgas vajadzības nekā iebūvētajām kārtošanas metodēm.