Ako triediť zoznamy v Pythone

How Sort Lists Python



Tento článok sa bude zaoberať sprievodcom k triediacim zoznamom v Pythone. Objekt zoznamu v Pythone je zbierka jednej alebo viacerých položiek oddelených čiarkami. Jedná sa o iterovateľný objekt a k jeho prvkom je možné pristupovať iteráciou zoznamu pomocou príkazov loop a iných výrazov. Zoznam Pythonu môžete triediť pomocou triediacich a triedených metód, obidva sú vysvetlené v článku. Všetky ukážky kódu v tomto článku sú testované s jazykom Python 3.9.5 v Ubuntu 21.04.

Spôsob zoradenia

Metóda triedenia triedi zoznam na mieste. Inými slovami, zmení sa objekt zoznamu, ktorý sa chystáte zoradiť, a zmení sa poradie jeho prvku. Ak nepotrebujete pôvodný zoznam a nevadí vám, že zoznam zmení svoje poradie prvkov na mieste, je to najefektívnejšia metóda v Pythone na triedenie zoznamu. Zvážte tento príklad:







the= [2, 8, 6, 4]

.triediť()

vytlačiť (the)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:



[2, 4, 6, 8]

Prvý príkaz v ukážke kódu definuje zoznam. Ďalej je v zozname vyvolaná metóda triedenia. Po vytlačení zoznamu môžete vidieť, že poradie pôvodného zoznamu bolo zmenené.



Python predvolene triedi zoznam vo vzostupnom poradí. Ak chcete zoradiť zoznam zostupne, použite reverznú metódu, ako je uvedené v ukážke kódu nižšie:





the= [2, 8, 6, 4]

.triediť()

.obrátiť()

vytlačiť (the)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

[8, 6, 4, 2]

Reverzná metóda tiež zmení zoznam Pythonu na mieste bez vytvorenia nového zoznamu.



Ak váš zoznam obsahuje reťazcové prvky, vyvolaním metódy triedenia v ňom sa zoradí podľa abecedy, kde sú najskôr zoradené symboly a čísla. Pozrite sa na ukážku kódu nižšie:

the= ['s', „do“, „S“, '4', '#']

.triediť()
vytlačiť (the)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

['#', '4', „do“, 's', „S“]

Metódu obrátenia môžete použiť aj v zozname obsahujúcom reťazcové prvky.

the= ['s', „do“, „S“, '4', '#']

.triediť()

.obrátiť()

vytlačiť (the)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

[„S“, 's', „do“, '4', '#']

Zoradená metóda

Zoradená metóda tiež triedi zoznam v Pythone, rovnakým spôsobom ako metóda triedenia. Namiesto úpravy pôvodného zoznamu však vráti nový zoznam, takže pôvodný zoznam zostane nedotknutý v prípade, že ho budete chcieť znova použiť. Zvážte nasledujúci kód:

zoznam 1= ['s', „do“, „S“, '4', '#']

zoznam2= triedené(zoznam 1)

vytlačiť (zoznam 1,zoznam2)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

['s', „do“, „S“, '4', '#'] ['#', '4', „do“, 's', „S“]

Na výstupe môžete vidieť, že list1 je neporušený a list2 má teraz zoradené prvky. Môžete tiež použiť reverznú metódu na zozname2 na zmenu jeho metodiky objednávania.

Reverzný argument

Argument obrátenia môžete použiť ako alternatívu k reverznej funkcii v metódach triedenia aj triedenia, aby ste zoradený zoznam dostali zostupne. Ak chcete zmeniť poradie zoradenia, zadajte iba skutočnú hodnotu:

zoznam 1= ['s', „do“, „S“, '4', '#']

zoznam2= triedené(zoznam 1,obrátiť=Pravda)

vytlačiť (zoznam 1,zoznam2)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

['s', „do“, „S“, '4', '#'] [„S“, 's', „do“, '4', '#']

Použitie kľúčovej funkcie na zadanie vlastnej logiky na triedenie prvkov zoznamu

V metóde zoradenia aj triedenia môžete zadať ďalší kľúčový argument, ktorý ako hodnotu považuje funkciu volania. Tomuto kľúčovému argumentu je možné priradiť existujúcu funkciu z vstavaných modulov Pythonu alebo môžete vlastnej funkcii dodať vlastnú logiku. Pozrite sa na ukážku kódu nižšie:

zoznam 1= ['a B C d e', 'xyz', 'ijkl']

zoznam2= triedené(zoznam 1,kľúč=len)

vytlačiť (zoznam 1,zoznam2)

zoznam 1.triediť(kľúč=len)

vytlačiť (zoznam 1)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

['a B C d e', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'a B C d e']

['xyz', 'ijkl', 'a B C d e']

Ukážka kódu ukazuje použitie kľúčového argumentu v triedených aj v triediacich metódach. Funkcia, ktorá je k nemu dodaná, sa nazýva len, ktorá určuje dĺžku reťazcového objektu alebo iteráciu. Funkcia alebo výzva by mala pôvodne obsahovať iba jeden argument. Priradíte ho ku kľúčovému argumentu bez použitia zložených zátvoriek. Volateľná funkcia dodaná do kľúčového argumentu sa volá na každom prvku zoznamu. Hodnoty vrátené z tejto metódy na výzvu sa potom použijú ako kľúč na zoradenie zoznamu. Dodanie funkcie len do kľúčového argumentu preto triedi prvky zoznamu v poradí podľa ich dĺžky, to znamená od najkratšieho po najdlhší. Ako už bolo uvedené, na obrátenie metodiky triedenia môžete vždy použiť reverznú metódu.

Môžete tiež použiť vlastnú funkciu alebo lambda funkcie s jedným riadkom, ktoré vracajú hodnotu jedného výrazu. Pozrite sa na nižšie uvedenú ukážku kódu, v ktorej je zoznam s n -tičkami aktuálneho inventára prepraviek s ovocím:

zoznam 1= [(„mango“, 99), ('oranžová', 51), ('banán', 76)]

zoznam 1.triediť(kľúč=lambdainventár: inventár[1])

vytlačiť (zoznam 1)

Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

[('oranžová', 51), ('banán', 76), („mango“, 99)]

Funkcia lambda je dodávaná s inventárom argumentov, ktorý je každým prvkom zoznamu vo forme n -tíc. Potom vráti druhý prvok každej n -tice ako kľúč (v indexe 1). Funkcia zoradenia potom zoradí všetky n -tice podľa druhého prvku vo vzostupnom poradí. Na obrátenie poradia zoradenia môžete použiť aj funkciu obrátenia alebo argument obrátenia.

Záver

Toto je niekoľko spôsobov, pomocou ktorých môžete triediť obsah iterovateľného zoznamu v Pythone. Kľúčový argument vám umožňuje napísať vlastnú logiku triedenia, vhodnú pre aplikácie, ktoré môžu mať iné potreby ako vstavané metódy triedenia.