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: