Kaip rūšiuoti sąrašus „Python“

How Sort Lists Python



Šis straipsnis apims „Python“ sąrašų rūšiavimo vadovą. „Python“ sąrašo objektas yra vieno ar daugiau kableliais atskirtų elementų rinkinys. Tai yra pasikartojantis objektas, o jo elementus galima pasiekti kartojant sąrašą naudojant ciklo teiginius ir kitas išraiškas. Galite rūšiuoti „Python“ sąrašą naudodamiesi rūšiavimo ir rūšiavimo metodais, abu jie paaiškinti straipsnyje. Visi šiame straipsnyje esantys kodo pavyzdžiai yra išbandyti naudojant „Python 3.9.5“ „Ubuntu 21.04“.

Rūšiavimo metodas

Rūšiavimo metodas sutvarko sąrašą vietoje. Kitaip tariant, jis pakeis sąrašo objektą, kurį ketinate rūšiuoti, ir pertvarkys jo elementą. Jei jums nereikia originalaus sąrašo ir neprieštaraujate, kad sąrašas pakeistų elementų tvarką vietoje, tai yra efektyviausias „Python“ būdas rūšiuoti sąrašą. Apsvarstykite šį pavyzdį:







į= [2, 8, 6, 4]

.rūšiuoti()

spausdinti (į)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:



[2, 4, 6, 8]

Pirmasis kodo pavyzdžio teiginys apibrėžia sąrašą. Toliau sąraše iškviečiamas rūšiavimo metodas. Spausdindami sąrašą matote, kad pradinio sąrašo tvarka buvo pakeista.



Pagal numatytuosius nustatymus „Python“ rūšiuoja sąrašą didėjančia tvarka. Jei norite rūšiuoti sąrašą mažėjančia tvarka, naudokite atvirkštinį metodą, kaip parodyta žemiau esančiame kodo pavyzdyje:





į= [2, 8, 6, 4]

.rūšiuoti()

.atvirkščiai()

spausdinti (į)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

[8, 6, 4, 2]

Atvirkštinis metodas taip pat pakeičia „Python“ sąrašą vietoje, nesukurdamas naujo sąrašo.



Jei jūsų sąraše yra eilutės elementų, paskambinus į rūšiavimo metodą, jis bus išdėstytas abėcėlės tvarka, kur simboliai ir skaičiai yra užsakomi pirmiausia. Pažvelkite į toliau pateiktą kodo pavyzdį:

į= ['s', 'iki', 'Su', „4“, „#“]

.rūšiuoti()
spausdinti (į)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

[„#“, „4“, 'iki', 's', 'Su']

Atvirkštinį metodą taip pat galite naudoti sąraše, kuriame yra eilutės elementai.

į= ['s', 'iki', 'Su', „4“, „#“]

.rūšiuoti()

.atvirkščiai()

spausdinti (į)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

['Su', 's', 'iki', „4“, „#“]

Rūšiuotas metodas

Rūšiuotas metodas taip pat rūšiuoja „Python“ sąrašą, kaip ir rūšiavimo metodas. Tačiau vietoj to, kad pakeistų pradinį sąrašą, jis grąžina naują sąrašą, kad jūsų pirminis sąrašas būtų nepaliestas, jei norite jį pakartotinai naudoti. Apsvarstykite žemiau esantį kodą:

sąrašas1= ['s', 'iki', 'Su', „4“, „#“]

sąrašas2= surūšiuotas(sąrašas1)

spausdinti (sąrašas1,sąrašas2)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

['s', 'iki', 'Su', „4“, „#“] [„#“, „4“, 'iki', 's', 'Su']

Išvestyje galite pamatyti, kad sąrašas1 yra nepažeistas, o sąrašas2 dabar turi surūšiuotus elementus. Taip pat galite naudoti atvirkštinį metodą sąraše2, kad pakeistumėte jo užsakymo metodiką.

Atvirkštinis argumentas

Galite naudoti atvirkštinį argumentą kaip alternatyvą atvirkštinei funkcijai tiek rūšiavimo, tiek rūšiavimo metoduose, kad gautumėte surūšiuotą sąrašą mažėjančia tvarka. Tiesiog pateikite tikrąją vertę, kad pakeistumėte rūšiavimo tvarką:

sąrašas1= ['s', 'iki', 'Su', „4“, „#“]

sąrašas2= surūšiuotas(sąrašas1,atvirkščiai=Tiesa)

spausdinti (sąrašas1,sąrašas2)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

['s', 'iki', 'Su', „4“, „#“] ['Su', 's', 'iki', „4“, „#“]

Klavišo funkcijos naudojimas, norint nurodyti savo logiką sąrašo elementams rūšiuoti

Tiek rūšiavimo, tiek rūšiavimo metoduose galite nurodyti papildomą pagrindinį argumentą, kurio vertė laikoma iškviečiama funkcija. Šiam pagrindiniam argumentui galima priskirti esamą funkciją iš integruotų „Python“ modulių arba galite pateikti savo funkciją naudodami pasirinktinę logiką. Pažvelkite į toliau pateiktą kodo pavyzdį:

sąrašas1= ['a B C D E', „xyz“, 'ijkl']

sąrašas2= surūšiuotas(sąrašas1,Raktas=len)

spausdinti (sąrašas1,sąrašas2)

sąrašas1.rūšiuoti(Raktas=len)

spausdinti (sąrašas1)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

['a B C D E', „xyz“, 'ijkl'] [„xyz“, 'ijkl', 'a B C D E']

[„xyz“, 'ijkl', 'a B C D E']

Kodo pavyzdys iliustruoja pagrindinių argumentų naudojimą tiek surūšiuotame, tiek rūšiavimo metoduose. Jai suteikta funkcija vadinama len, kuri nustato eilutės objekto ilgį arba pasikartojantį. Funkcija arba šaukiamasis iš pradžių turėtų apimti tik vieną argumentą. Jūs priskiriate jį pagrindiniam argumentui nenaudodami skliaustų. Pagrindiniam argumentui suteikta iškviečiama funkcija iškviečiama kiekvienam sąrašo elementui. Vertės, gautos iš šio iškviečiamo metodo, naudojamos kaip raktas sąrašui rūšiuoti. Taigi, pateikiant „len“ funkciją pagrindiniam argumentui, sąrašo elementai rūšiuojami pagal jų ilgį, ty nuo trumpiausio iki ilgiausio. Kaip minėta anksčiau, visada galite naudoti atvirkštinį metodą, kad pakeistumėte rūšiavimo metodiką.

Taip pat galite naudoti savo pasirinktinę funkciją arba vieno eilutės lambda funkcijas, kurios grąžina vienos išraiškos vertę. Pažvelkite į toliau pateiktą kodo pavyzdį, kuriame sąraše yra dabartinių vaisių dėžių atsargų:

sąrašas1= [('mango', 99), ('oranžinė', 51), ('bananas', 76)]

sąrašas1.rūšiuoti(Raktas=lambdainventorius: inventorius[1])

spausdinti (sąrašas1)

Paleidę aukščiau pateiktą kodo pavyzdį, turėtumėte gauti tokią išvestį:

[('oranžinė', 51), ('bananas', 76), ('mango', 99)]

Funkcija „lambda“ pateikiama su argumentų inventoriumi, kuris yra kiekvienas sąrašo elementas kortelės pavidalu. Tada jis grąžina antrąjį kiekvieno rinkinio elementą kaip raktą (1 indekse). Rūšiavimo funkcija tada surūšiuoja visas kopijas pagal antrąjį elementą didėjančia tvarka. Galutiniame rezultate taip pat galite naudoti atvirkštinę funkciją arba atvirkštinį argumentą, kad pakeistumėte rūšiavimo tvarką.

Išvada

Tai yra keletas būdų, kuriais galite rūšiuoti pasikartojančio sąrašo turinį „Python“. Pagrindinis argumentas leidžia jums parašyti savo pasirinktinę rūšiavimo logiką, tinkančią programoms, kurių poreikiai gali skirtis nuo integruotų rūšiavimo metodų.