Python Popis sort() s primjerima

โšก Pametni saลพetak

Python list sort() slaลพe elemente popisa na mjesto, uzlazno prema zadanim postavkama ili silazno kroz obrnuti parametar, dok opcionalna kljuฤna funkcija sortira prema prilagoฤ‘enim kriterijima kao ลกto su duljina, polja s n-torkama ili korisniฤki definirane funkcije.

  • ๐Ÿ”˜ Sintaksa: Metoda sort() prihvaฤ‡a opcionalne parametre kljuฤ i obrnuto te mijenja izvornu listu bez stvaranja kopije.
  • โ˜‘๏ธ Kontrola narudลพbe: Postavljanje parametra reverse na True sortira vrijednosti od najviลกe do najniลพe umjesto zadanog uzlaznog redoslijeda.
  • โœ… Kljuฤni parametar: Kljuฤna funkcija kao ลกto je len sortira elemente prema izvedenoj vrijednosti poput duljine niza znakova ili polja n-torke.
  • ๐Ÿงช sortiranje vs. sortirano: Metoda sort() mijenja popis na mjestu i vraฤ‡a None, dok sorted() vraฤ‡a novi popis i zadrลพava original.
  • ๐Ÿ› ๏ธ Prilagoฤ‘eni kriteriji: Lambda izrazi i korisniฤki definirane funkcije omoguฤ‡uju sort() sortiranje n-torki, rjeฤnika i imenovanih n-torki prema bilo kojem odabranom atributu.
  • ๐Ÿค– Tijekovi rada umjetne inteligencije: Cjevovodi strojnog uฤenja sortiraju predviฤ‘anja prema rezultatu i odabiru najbolje rezultate prije rangiranja ili evaluacije.

Python Popis sort()

ล to je sort() metoda u Python?

Funkcija sort() u Python Pomaลพe sortirati popis u uzlazni ili silazni redoslijed. Moลพe se koristiti za sortiranje numeriฤkog popisa, n-torki i popisa nizova. Ne stvara zaseban popis, veฤ‡ modificira ili sortira original.

Sintaksa metode sortiranja u Python

Funkcija sortiranja ima sljedeฤ‡u sintaksu:

List.sort(key=โ€ฆ, reverse=โ€ฆ)

Funkcija sortiranja ima dva opcionalna parametra, i to:

  • Kljuฤ:- Koristi se za sortiranje funkcije na temelju kriterija sortiranja.
  • Reverse: โ€“ vrijednost je ili istinita ili neistinita. Ako je istinita, ova prilagoฤ‘ena funkcija sortira popis silaznim redoslijedom.

Sortiranje popisa uzlaznim redoslijedom pomoฤ‡u metode Sortiraj u Python

In Python, funkcija sortiranja prema zadanim postavkama sortira bilo koji popis uzlaznim redoslijedom. Popis u uzlaznom redoslijedu ima najniลพu vrijednost na lijevoj strani, a najviลกu vrijednost dolazi na desnoj strani.

Primjer:

Python kodirati:

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

Izlaz:

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

Code Objaลกnjenje:

  • Gornji popis je nasumiฤno definiran popis nizova.
  • Funkcija sortiranja Python pomaลพe u sortiranju sluฤajnog popisa uzlaznim redoslijedom, s najniลพom duljinom rijeฤi na lijevoj strani i najveฤ‡om duljinom rijeฤi na desnoj strani.

Sortiranje popisa silaznim redoslijedom

Funkcija sortiranja takoฤ‘er omoguฤ‡uje sortiranje popisa silaznim redoslijedom. Moลพe se definirati kao red gdje popis poฤinje s najviลกom vrijednoลกฤ‡u i zavrลกava s najniลพom vrijednoลกฤ‡u.

Obrnuti parametar funkcije sortiranja dodijeljen je kao istinit kako bi se popis poredao silaznim redoslijedom.

Pogledajmo primjer u nastavku:

Python kodirati:

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)

Izlaz:

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

Napomena: Osigurajte da dodjela rijeฤi "True" obrnutom parametru poฤinje velikim slovom "T" kako biste izbjegli bilo kakve pogreลกke u vremenu izvoฤ‘enja.

Sortiranje popisa torki pomoฤ‡u metode Sortiraj u Python

Python Torte su zbirke nepromjenjivih elemenata koji slijede ureฤ‘eni niz. PythonFunkcija sortiranja moลพe se koristiti za sortiranje popisa torki pomoฤ‡u prilagoฤ‘ene funkcije i lambda izraza.

Prilagoฤ‘ena funkcija moลพe se stvoriti bez imena i predstaviti lambda izrazom. Slijedi sintaksa za lambda izraz:

Sintaksa:

Lambda arguments: expression

Gornja sintaksa je ekvivalentna donjem python kodu:

def name (arguments):
return expression

Evo primjera tuple-a i prilagoฤ‘ene funkcije koji ilustrira kako funkcija sortiranja s kljuฤnim parametrima pomaลพe u sortiranju elemenata u tuple-u:

Python kodirati:

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)

Izlaz:

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

Code Objaลกnjenje:

  • Obrnuti parametar je definiran kao istinit za sortiranje torke silaznim redoslijedom.
  • Prilagoฤ‘ena funkcija uzima drugi element torke.
  • Ovo se koristi kao kljuฤ funkcije sortiranja.

Pogledajmo donji primjer koji koristi lambda izraz:

Python kodirati:

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)

Izlaz:

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

Objaลกnjenje:

  • Lambda izraz vam pomaลพe sortirati elemente torke od visokog prema niskom s kljuฤem kao drugim elementom torke.
  • Program ฤ‡e provjeriti najveฤ‡u vrijednost drugog elementa torke.

Razvrstavanje stavki popisa pomoฤ‡u Len kao kljuฤnog parametra

Len je ugraฤ‘ena funkcija koja odreฤ‘uje duljinu elementa. Odreฤ‘ena duljina moลพe se koristiti za indeksiranje u funkciji sortiranja. Da bismo to uฤinili, dodjeljujemo Len Python kljuฤni parametar funkcije sortiranja.

Sljedeฤ‡e Python kod ilustrira kako koristiti funkciju Len s funkcijom sortiranja.

Python Code:

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

Izlaz:

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

Code Objaลกnjenje:

Razvrstavanje stavki popisa pomoฤ‡u Len

  • Duljina elementa postaje indeks za kljuฤni parametar za sreฤ‘ivanje popisa uzlaznim redoslijedom.
  • Funkcija Len procjenjuje duljinu svakog elementa prisutnog na osnovnoj listi.
  • Zadrลพava najkraฤ‡i element na lijevoj strani, a najveฤ‡i element na desnoj strani.
  • Ovdje rijeฤi alto i java imaju duljinu od 4, koje su prve poredane na popisu, a zatim slijede Guru99, koji ima duljinu od 6.

Ovaj primjer ilustrira koncept obrnutog parametra u funkciji sortiranja kao ลกto je prikazano u nastavku:

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)

Izlaz:

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

Razvrstavanje stavki popisa koriลกtenjem korisniฤki definirane funkcije kao kljuฤnog parametra

Takoฤ‘er moลพete koristiti korisniฤki definiranu funkciju kao kljuฤni parametar za sortiranje popisa. Evo primjera:

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)

Izlaz:

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 Objaลกnjenje:

  • Korisniฤki definirana funkcija stvorena je za vraฤ‡anje godine
  • Kljuฤni parametar uzima korisniฤki definiranu funkciju kao kriterij.
  • Funkcija sortiranja ฤ‡e rasporediti popis uzlaznim redoslijedom na temelju vrijednosti elementa "godina".

Razlika izmeฤ‘u metode sortiranja i sortirane metode u Python

Nakon ลกto proฤ‘emo kroz gornje primjere, korisno je izravno usporediti dva alata za sortiranje. Prije nego ลกto se saลพeto iznesu razlike, shvatimo sintaksu metode Sorted.

Python Sintaksa:

sorted (list_name, reverse=โ€ฆ., key=..)

Code Objaลกnjenje:

  • Funkcija sortiranja razvrstava popis prema uzlaznom ili silaznom redoslijedu.
  • Funkcija prihvaฤ‡a tri parametra, od kojih su dva parametra opcijskog tipa i jedan parametar zahtijevanog tipa.
  • Parametar list_name potreban je kada koristite metodu Sorted.
  • Metoda Sorted moลพe uzeti bilo koju vrstu popisa koji se moลพe ponavljati kao ulaz.
  • Kljuฤni parametri i obrnuti parametri izborni su parametri pod razvrstanom metodom u Python.

Ovdje je primjer koriลกtenja funkcije sortiranja i sortiranja u Python:

Python kodirati:

#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)

Izlaz:

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 Objaลกnjenje:

  • Izvorni popis prosljeฤ‘uje se kao obavezni parametar za sortiranu funkciju.
  • Metoda Sorted vraฤ‡a novi popis osim izvornog popisa.
  • Buduฤ‡i da se nikakvi dodatni parametri ne prosljeฤ‘uju sortiranoj metodi, novi je popis prema zadanim postavkama sortiran uzlaznim redoslijedom.
  • Funkcija sortiranja ne stvara novi popis.

Slijedeฤ‡e toฤke o kljuฤnim sliฤnostima i razlikama:

Poredana funkcija Funkcija sortiranja
Poredana funkcija u Python je ugraฤ‘ena funkcija koja uzima list_name kao obavezni parametar. Funkcija sortiranja ne uzima izvorni popis kao parametar.
Sortirana metoda vraฤ‡a novi popis Funkcija sortiranja ne vraฤ‡a novi popis
Funkcija Sorted trebala bi se koristiti za popise koji se mogu ponavljati Funkcija sortiranja trebala bi se koristiti za popise koji se ne mogu ponoviti.
Ne mijenja izvorni popis i omoguฤ‡uje nam zadrลพavanje izvornih podataka. Funkcija sortiranja mijenja izvornu funkciju i stoga zauzima manje memorijskog prostora

Kada koristiti sortiranu metodu ili metodu sortiranja?

Uzmimo primjer koji zahtijeva sortiranje podataka o utrci. Program koristi startni broj i vrijeme potrebno u sekundama za zavrลกetak utrke.

Python kodirati:

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)

Izlaz:

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 Objaลกnjenje:

  • Osnovni popis sortiran je pomoฤ‡u funkcije sortiranja i funkcije sortiranja.
  • Osnovni popis se gubi kada se primijeni funkcija sortiranja.
  • Funkcija sortiranja ne bi se trebala primijeniti na izvorni skup podataka. Trebalo bi se koristiti kada postoji verzija kopije izvornog skupa podataka.
  • Funkcija Sorted zadrลพava izvorni popis. Ne poniลกtava ga.
  • Ovo nudi bolje tracjednostavnost i uฤinkovito upravljanje podacima.

Pitanja i odgovori

Proslijedite key=str.lower metodi sort(), na primjer names.sort(key=str.lower). Svaki se niz usporeฤ‘uje malim slovima, pa se 'Apple' i 'banana' poredaju abecednim redom bez obzira na velika i mala slova. Izvorna velika i mala slova svakog elementa ostaju saฤuvana u konaฤnom sortiranom popisu.

Sortiranje popisa svih brojeva ili svih nizova znakova funkcionira, ali mijeลกanje nepovezanih tipova poput cijelih brojeva i nizova znakova izaziva greลกku TypeError, jer Python ne mogu ih usporediti. Prvo pretvorite vrijednosti u jedan usporediv tip ili proslijedite funkciju kljuฤa koja vraฤ‡a usporedive kljuฤeve.

Python povijesno koriลกten Timsort, hibrid sortiranja spajanjem i sortiranja umetanjem. Od verzije 3.11 interpreter koristi Powersort, varijantu izvedenu iz Timsorta s pametnijom politikom spajanja. Oba su stabilna i u najgorem sluฤaju se izvode u vremenu O(n log n).

Da. Metoda sort() je stabilna, pa elementi koji usporeฤ‘uju jednake zadrลพavaju svoj izvorni relativni redoslijed. To vam omoguฤ‡uje sortiranje po nekoliko kriterija u fazama, sortirajuฤ‡i najmanje vaลพan kljuฤ prvo, a najvaลพniji kljuฤ posljednje.

Metoda sort() se izvrลกava u vremenu O(n log n) u najgorem i prosjeฤnom sluฤaju. Na podacima koji su veฤ‡ uglavnom ureฤ‘eni pribliลพava se vremenu O(n), jer temeljni algoritam detektira i ponovno koristi postojeฤ‡e sortirane prolaze umjesto da ih ponovno sortira.

Proslijedite kljuฤ koji pretvara svaku stavku tijekom usporedbe, na primjer nums.sort(key=int). Popis se zatim sortira po numeriฤkoj vrijednosti, a ne po znaku, tako da '10' ispravno sortira nakon '9'. Pohranjeni elementi ostaju kao nizovi znakova; samo usporedba koristi njihovu cjelobrojnu vrijednost.

Sortiranje slaลพe predviฤ‘anja prema rezultatu ili vjerojatnosti, odabire top-k rezultata u sustavima rangiranja i preporuka te sortira zapise tijekom pripreme podataka. Cjevovodi strojnog uฤenja ฤesto sortiraju vrijednosti znaฤajki ili izlaze modela prije evaluacije, pa je ugraฤ‘ena metoda sort() uobiฤajeni korak predobrade.

Da. GitHub Copilot i agentski AI asistenti generiraju pozive sort() i sorted(), ukljuฤujuฤ‡i kljuฤne funkcije i lambda izraze, iz kratkog komentara. Mogu refaktorirati petlje u pojedinaฤne naredbe za sortiranje, iako biste i dalje trebali testirati redoslijed i potvrditi rezultat na rubnim sluฤajevima.

Saลพmite ovu objavu uz: