Python Loendi sort() koos näidetega

⚡ Nutikas kokkuvõte

Python list sort() järjestab loendi elemendid paika, vaikimisi kasvavalt või vastupidise parameetri abil kahanevalt, samas kui valikuline võtmefunktsioon sorteerib kohandatud kriteeriumide, näiteks pikkuse, tuple'i väljade või kasutaja määratletud funktsioonide järgi.

  • 🔘 süntaksit: Meetod sort() aktsepteerib valikulisi võtme- ja vastupidiseid parameetreid ning muudab algset loendit koopiat loomata.
  • ☑️ Tellimuse kontroll: Parameetri reverse väärtuseks True määramine sorteerib väärtused suurimast väikseimani, mitte vaikimisi kasvavas järjekorras.
  • Põhiparameeter: Võtmefunktsioon, näiteks len, sorteerib elemente tuletatud väärtuse, näiteks stringi pikkuse või dupleksivälja järgi.
  • 🧪 sorteeri vs sorteeri: Meetod sort() muudab loendit kohapeal ja tagastab väärtuse „None”, samas kui meetod sorted() tagastab uue loendi ja säilitab algse.
  • 🛠️ Kohandatud kriteeriumid: Lambda-avaldised ja kasutaja määratletud funktsioonid lasevad sort()-il järjestada tuupleid, sõnaraamatuid ja nimega tuupleid mis tahes valitud atribuudi järgi.
  • 🤖 Tehisintellekti töövood: Masinõppe torujuhtmed sorteerivad ennustusi skoori järgi ja valivad enne järjestamist või hindamist parimad tulemused.

Python Loendi sortimine()

Milles on sort() meetod Python?

Sort() funktsioon Python aitab loendit kasvavas või kahanevas järjekorras sortida. Seda saab kasutada numbriliste loendite, paaride ja stringide loendi sortimiseks. See ei loo eraldi loendit, vaid muudab või sorteerib algset loendit.

Sortimismeetodi süntaks Python

Sorteerimisfunktsioonil on järgmine süntaks:

List.sort(key=…, reverse=…)

Sorteerimisfunktsioonil on kaks valikulist parameetrit, nimelt:

  • Võti: seda kasutatakse funktsiooni sortimiseks sortimiskriteeriumi alusel.
  • Reverse: – see võtab väärtuseks kas tõese või väära. Kui see on tõene, sorteerib see kohandatud funktsioon loendi kahanevas järjekorras.

Loendi sortimine kasvavas järjekorras, kasutades meetodit Sordi sisse Python

In Python, sortimise funktsioon sorteerib vaikimisi kõik loendid kasvavas järjekorras. Kasvavas järjestuses loendi väikseim väärtus on vasakul ja suurim väärtus on paremal.

Näide:

Python kood:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Väljund:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Selgitus:

  • Ülaltoodud loend on juhuslikult määratletud stringide loend.
  • Sortimisfunktsioon Python aitab järjestada juhuslikku loendit kasvavas järjekorras, kus vasakul pool on sõna väikseim ja paremal pool suurim sõna pikkus.

Loendi sortimine kahanevas järjekorras

Sorteerimisfunktsioon võimaldab ka loendit sortida kahanevas järjekorras. Seda saab määratleda tellimusena kus loend algab suurima väärtusega ja lõpeb väikseima väärtusega.

Sorteerimisfunktsiooni vastupidine parameeter määratakse tõeseks, et saada loend sorteeritud kahanevas järjekorras.

Vaatame allolevat näidet:

Python kood:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Väljund:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Märkus. Käitusaja vigade vältimiseks veenduge, et sõna "True" omistamine pöördparameetrile algaks suurtähega "T".

Korterite loendi sortimine, kasutades meetodit Sordi sisse Python

Python Tuplid on muutumatute elementide kogumid, mis järgivad järjestatud järjestust. PythonSorteerimisfunktsiooni saab kasutada korteežide loendi sortimiseks kohandatud funktsiooni ja lambda-avaldise abil.

Kohandatud funktsiooni saab luua ilma nimeta ja esitada lambda-avaldisega. Järgnev on lambda-avaldise süntaks:

süntaksit:

Lambda arguments: expression

Ülaltoodud süntaks on samaväärne alloleva Pythoni koodiga:

def name (arguments):
return expression

Siin on näide tuuplist ja kohandatud funktsioonist, mis illustreerib, kuidas võtmeparameetritega sortimisfunktsioon aitab tuuplis elemente sortida:

Python kood:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Väljund:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Selgitus:

  • Pöördparameeter on defineeritud tõeseks, et sortida korteež kahanevas järjekorras.
  • Kohandatud funktsioon võtab korteeži teise elemendi.
  • Seda kasutatakse sortimisfunktsiooni võtmena.

Vaatame allolevat näidet, mis kasutab lambda avaldist:

Python kood:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Väljund:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Selgitus:

  • Lambda-avaldis aitab teil sorteerida korteeži elemente kõrgest madalaks, kui võti on korteeži teine ​​element.
  • Programm kontrollib korteeži teise elemendi suurimat väärtust.

Loendiüksuste sortimine võtmeparameetrina Leni abil

Len on sisseehitatud funktsioon, mis määrab elemendi pikkuse. Määratud pikkust saab kasutada indekseerimiseks sortimisfunktsioonis. Selleks määrame Len-i väärtusele Python sortimisfunktsiooni võtmeparameeter.

Järgmised Python kood illustreerib, kuidas kasutada funktsiooni Len koos sortimisfunktsiooniga.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Väljund:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Selgitus:

Loendiüksuste sortimine Leni abil

  • Elemendi pikkus muutub võtmeparameetri indeksiks loendi järjestamiseks kasvavas järjekorras.
  • Funktsioon Len hindab iga põhiloendis oleva elemendi pikkust.
  • See hoiab kõige lühema elemendi vasakul ja suurima elemendi paremal küljel.
  • Siin on sõnade alto ja java pikkused 4, mis on loendis esimesena järjestatud, millele järgnevad Guru99, mille pikkus on 6.

See näide illustreerib sortimisfunktsioonis oleva pöördparameetri kontseptsiooni, nagu allpool näidatud:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Väljund:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Loendiüksuste sortimine, kasutades võtmeparameetrina kasutaja määratud funktsiooni

Kasutaja määratletud funktsiooni saab loendi sortimiseks kasutada ka võtmeparameetrina. Siin on näide:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Väljund:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Selgitus:

  • Aasta tagastamiseks luuakse kasutaja määratud funktsioon
  • Võtmeparameeter võtab kriteeriumina kasutaja määratud funktsiooni.
  • Sorteerimisfunktsioon järjestab loendi kasvavas järjekorras elemendi “year” väärtuse alusel.

Erinevus sortimismeetodi ja sortimismeetodi vahel Python

Pärast ülaltoodud näidetega tutvumist on kasulik kahte sortimistööriista otse võrrelda. Enne erinevuste kokkuvõtmist vaatame sortimismeetodi süntaksit.

Python süntaksit:

sorted (list_name, reverse=…., key=..)

Code Selgitus:

  • Sorditud funktsioon sorteerib loendi kas kasvavas või kahanevas järjekorras.
  • Funktsioon aktsepteerib kolme parameetrit, millest kaks parameetrit on valikulist tüüpi ja üks parameeter on nõutavat tüüpi.
  • Sorditud meetodi kasutamisel on nõutav parameetri loendi_nimi.
  • Sorditud meetod võib kasutada sisendina mis tahes tüüpi itereeritavat loendit.
  • Põhiparameetrid ja pöördparameetrid on valikulised parameetrid sorteeritud meetodi korral Python.

Siin on näide sortimise ja sortimise funktsiooni kasutamisest Python:

Python kood:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Väljund:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Selgitus:

  • Algne loend edastatakse sorteeritud funktsiooni nõutava parameetrina.
  • Sorditud meetod tagastab algsele loendile lisaks uue loendi.
  • Kuna sorteeritud meetodile täiendavaid parameetreid ei edastata, on uus loend vaikimisi järjestatud kasvavas järjekorras.
  • Sorteerimisfunktsioon ei loo uut loendit.

Järgnevalt on toodud peamised sarnasused ja erinevused:

Sorteeritud funktsioon Sorteerimisfunktsioon
Sorditud funktsioon Python on sisseehitatud funktsioon, mis võtab nõutava parameetrina nimekirja_nimi. Sorteerimisfunktsioon ei võta parameetrina algset loendit.
Sorditud meetod tagastab uue loendi Sortimisfunktsioon ei tagasta uut loendit
Itereeritavate loendite puhul tuleks kasutada sorteeritud funktsiooni Sortimisfunktsiooni tuleks kasutada mitteitereeritavate loendite jaoks.
See ei muuda algset loendit ja võimaldab meil säilitada algandmeid. Sorteerimisfunktsioon muudab algset funktsiooni ja võtab seega vähem mäluruumi

Millal kasutada sortimismeetodit või sortimismeetodit?

Võtame näite, mis nõuab võistluste andmete sorteerimist. Programm kasutab rinnanumbrit ja sõidu lõpetamiseks sekundites kuluvat aega.

Python kood:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Väljund:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Selgitus:

  • Põhiloendit sorteeritakse nii sortimis- kui ka sortimisfunktsiooni abil.
  • Põhiloend läheb sortimisfunktsiooni rakendamisel kaotsi.
  • Sorteerimisfunktsiooni ei tohiks algsele andmekogumile rakendada. Seda tuleks kasutada siis, kui algsest andmekogumist on olemas koopiaversioon.
  • Funktsioon Sorditud säilitab algse loendi. See ei alista seda.
  • See pakub paremat tracpaindlikkus ja tõhus andmehaldus.

KKK

Edastage meetodile sort() võti=str.lower, näiteks names.sort(võti=str.lower). Iga stringi võrreldakse väiketähtedega, seega on sõnad 'Apple' ja 'banana' tähestikulises järjekorras, olenemata suurtähtedest. Lõplikus sorteeritud loendis säilitatakse iga elemendi algne suur- ja väiketäht.

Kõigi numbrite või stringide loendi sortimine toimib, kuid omavahel mitteseotud tüüpide, näiteks täisarvude ja stringide segamine tekitab tüübivea (TypeError), sest Python ei saa neid võrrelda. Teisendage väärtused esmalt ühte võrreldavat tüüpi või edastage võtmefunktsioon, mis tagastab võrreldavad võtmed.

Python ajalooliselt kasutatud Timsorti, mis on liitmissortimise ja lisamissortimise hübriid. Alates versioonist 3.11 kasutab interpretaator Powersorti, mis on Timsortist tuletatud variant nutikama liitmispoliitikaga. Mõlemad on stabiilsed ja töötavad halvimal juhul O(n log n) ajaga.

Jah. Meetod sort() on stabiilne, seega elemendid, mis on võrreldavad, säilitavad oma algse suhtelise järjestuse. See võimaldab teil sortida mitme kriteeriumi järgi etappidena, sorteerides esmalt kõige vähem olulise ja viimasena kõige olulisema võtme järgi.

Meetod sort() töötab halvimal ja keskmisel juhul ajaga O(n log n). Andmete puhul, mis on juba enamasti järjestatud, läheneb see ajaga O(n), kuna aluseks olev algoritm tuvastab ja taaskasutab olemasolevaid sorteeritud jadasid nende ümbersorteerimise asemel.

Edastage võti, mis teisendab iga elemendi võrdlemise ajal, näiteks nums.sort(key=int). Seejärel järjestatakse loend numbrilise väärtuse, mitte tähemärgi järgi, seega sorteerib '10' õigesti ka pärast '9'. Salvestatud elemendid jäävad stringidena; ainult võrdluses kasutatakse nende täisarvulist väärtust.

Sorteerimine järjestab ennustused skoori või tõenäosuse järgi, valib edetabeli- ja soovitussüsteemides k parimat tulemust ning järjestab kirjed andmete ettevalmistamise ajal. Masinõppe torujuhtmed sorteerivad enne hindamist sageli tunnuste väärtusi või mudeli väljundeid, seega on sisseehitatud sort() meetod tavaline eeltöötlusetapp.

Jah. GitHub Copiloti ja agentide tehisintellekti assistendid genereerivad lühikese kommentaari põhjal sort() ja sorted() päringuid, sh võtmefunktsioone ja lambda-avaldisi. Nad saavad tsükleid ümber faktoreerida üksikuteks sortimislauseteks, kuigi servajuhtumitel tuleks siiski järjestust testida ja tulemust kinnitada.

Võta see postitus kokku järgmiselt: