Pythoni loendite sortimine: meetodid sort() ja sorted()

1. Mis on loendite sortimine Pythonis?

Miks on loendite sortimine oluline?

Loendite sortimine on andmehalduse ja -analüüsi puhul väga põhiline ja oluline operatsioon. Sortimine parandab andmete visuaalset esitust ning suurendab oluliselt otsingu- ja võrdlemise tõhusust. Näiteks, Pythonit kasutades andmetöötlusel, saab arvude või stringide järjestamine muuta keerulised andmed hõlpsamini käsitletavaks.

Pythonis on loendite sortimiseks olemas meetod sort() ja funktsioon sorted(). Nende funktsioonide õige kasutamine võimaldab tõhusat andmetöötlust.

2. Loendite sortimine Pythoni meetodi sort() abil

2.1 Meetodi sort() põhikäsitlus

Meetod sort() järjestatab loendi kohapeal, muutes algset loendit. Selle eeliseks on see, et uut loendit ei pea genereerima, mis on mäluefektiivne. Järgmine koodinäide sordib kasvavas järjekorras.

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)  # [1, 2, 5, 5, 6, 9]

2.2 Kahanevalt sortimine

Kui soovite kahanevalt järjestada, kasutage argumenti reverse=True.

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)
print(numbers)  # [9, 6, 5, 5, 2, 1]

2.3 Mäluefektiivsus ja kasutusstsenaariumid

Meetod sort() on eriti efektiivne, kui soovite säästa mälu. Kuna see muudab algset loendit, on sellel eelis mälukasutuse vähendamisel, kui on vaja tõhusalt töödelda suuri andmemahte.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Loendite sortimine funktsiooni sorted() abil

3.1 Funktsiooni sorted() põhikäsitlus

Funktsioon sorted() tagastab uue loendi, muutmata algset loendit. See on mugav, kui vajate sorteeritud loendit, säilitades samal ajal algse loendi. Järgmises näites on sorted() kasutatud kasvavas järjekorras sortimiseks.

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 5, 5, 6, 9]
print(numbers)  # [5, 2, 9, 1, 5, 6]  # Algset loendit ei muudeta

3.2 Erinevused meetodist sort()

Funktsioon sorted() erineb meetodist sort() selle poolest, et see genereerib ja tagastab uue loendi. Kui soovite säilitada algse loendi või hoida mitut erinevas järjekorras loendit, on sobiv valida funktsioon sorted().

4. Tingimuslik sortimine key-parameetri abil

4.1 Sortimine kohandatud tingimuste alusel

Nii sort() kui ka sorted() saavad kasutada key-argumenti sortimiseks teatud tingimuste alusel. Näiteks stringide loendi pikkuse järgi sortimiseks tehke järgmiselt:

words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words)  # ['date', 'apple', 'banana', 'cherry']

4.2 Sortimine suurtähtede ja väiketähtede ignoreerimisega

Kui soovite stringide järjestamisel ignoreerida suurtähti ja väiketähti, kasutage key=str.lower.

words = ['Apple', 'banana', 'Cherry', 'date']
sorted_words = sorted(words, key=str.lower)
print(sorted_words)  # ['Apple', 'banana', 'Cherry', 'date']

4.3 Keerukamad sortimised Lambda-funktsiooni abil

Lambda-funktsiooni abil on võimalikud ka keerukamad tingimuslikud sortimised. Järgmine näide sordib loendis olevaid tupleid teise elemendi alusel.

pairs = [(1, 3), (2, 1), (3, 2)]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs)  # [(2, 1), (3, 2), (1, 3)]

 

5. Meetodi sort() ja funktsiooni sorted() jõudluse erinevused

5.1 Jõudluse võrdlus

Nii sort() kui ka sorted() kasutavad Timsort algoritmi ja on tavaliselt kiired. Siiski, kuna sort() järjestatab loendi kohapeal, on sellel väiksem mälutarbimine ja see pakub eeliseid jõudluses, eriti suurte andmekogumite puhul. Teisest küljest genereerib sorted() uue loendi, mis tarbib rohkem mälu, kuid on kasulik olukordades, kus on vaja säilitada algne loend.

5.2 Kasutusvalikute põhipunktid

Kui on vaja tõhusalt töödelda suuri andmemahte, on soovitatav kasutada mäluefektiivset sort() meetodit. Samas, kui on vaja säilitada algsed andmed või luua mitu loendit erinevate sortimistingimustega, on sobiv sorted().

6. KKK

6.1 Mis on peamine erinevus sort() ja sorted() vahel?

Meetod sort() muudab loendit kohapeal ja tagastab None. Funktsioon sorted() aga tagastab uue loendi ja algset loendit ei muudeta.

6.2 Kuidas Pythonis loendit keerukate tingimustega sortida?

Loendi saab keerukate tingimuste alusel sortida, edastades key-parameetrile Lambda-funktsiooni või muu kohandatud funktsiooni.

6.3 Mis vahe on meetodil reverse() ja sort(reverse=True)?

Meetod reverse() lihtsalt pöörab loendi järjekorra ümber, sortimist ei toimu. sort(reverse=True) sordib loendi kahanevalt.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール