Navedite razumijevanja u Pythonu

List Comprehensions Python



Razumijevanje popisa često se koristi u Pythonu za pisanje jednorednih izraza koji stvaraju novi popis ili rječnik petljom preko iterabilnog objekta. Ovaj članak će objasniti kako koristiti razumijevanje popisa u Pythonu, počevši od osnovnog objašnjenja kako for petlje rade u Pythonu.

Za petlju u Pythonu

Naredba for petlje u Pythonu sekvencijalno ponavlja članove bilo kojeg objekta, popisa, niza itd. U usporedbi s drugim programskim jezicima, njezina je sintaksa mnogo čišća i ne zahtijeva ručno definiranje koraka iteracije i pokretanje iteracije. Iako postoje načini da se njegovo ponašanje učini istim kao i kod drugih programskih jezika (neće biti obrađeno u ovom članku). Također možete vršiti određenu kontrolu nad petljama koristeći izraze poput continue, break, pass itd. Ispod je jednostavan primjer for petlje u Pythonu:







zaxu domet(10):
ispisati(x)

Gornja petlja for ispisat će deset brojeva počevši od 0 do 9.



Pojedinosti o popisu

Razumijevanje popisa nije ništa drugo nego stenografski / sažet način pisanja više redaka za petlje u jednoslojnom iskazu. Primjer razumijevanja popisa u nastavku stvorit će novi popis kao [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] uključivanjem svih vrijednosti x u njega.



brojevima= [xzaxu domet(10)]
ispisati (brojevima)

Imajte na umu da razumijevanje popisa uvijek stvara novi popis i ne mijenja izvorne iterable koji se koriste u izrazu. Tipičan izraz razumijevanja popisa mora imati klauzulu for i može biti praćen uvjetnim izrazima if i else. Bez razumijevanja popisa, gornji primjer bit će napisan na sljedeći način:





brojevima= []
zaxu domet(10):
brojevima.dodati(x)

ispisati (brojevima)

Performanse i čitljivost

Shvaćanje popisa brže je nego za petlje. Međutim, osim ako ne ponavljate stotine tisuća stavki, nećete primijetiti velika poboljšanja performansi. Iako razumijevanje popisa pruža sažet način pisanja za petlje, složeni izrazi mogu dovesti do loše čitljivosti koda i povećane detaljnosti. Važno je da kôd bude čitljiv, osim ako postizanje maksimalnih performansi nije apsolutna nužnost za vaš program.

Primjer: Korištenje sintakse za razumijevanje popisa sa rječnicima i skupovima

Python rječnik je zbirka elemenata definiranih u parovima ključ-vrijednost, dok je skup zbirka jedinstvenih vrijednosti gdje duplikati nisu dopušteni. Razumijevanje popisa može se koristiti i s rječnicima i skupovima Pythona. Sintaksa se malo razlikuje, umjesto da umotavate izraz u kvadratne zagrade, sada ćete morati koristiti kovrčave zagrade. Također ćete dobiti novi rječnik / skup objekata umjesto novog popisa.



podaci= {'Grad':'new york', 'Ime':'John Doe'}

formatirani_data= {k: v.titula() zado,vupodaci.stavke()}

ispisati (formatirani_data)

Gornji primjer će pretvoriti nizove vrijednosti u velika i velika slova i stvoriti novi rječnik pod nazivom formatted_data, čiji će ispis biti: {‘grad’: ‘New York’, ‘ime’: ‘John ​​Doe’}. Također možete promijeniti rječnik / postaviti na mjesto navođenjem postojeće varijable rječnika s lijeve strane.

podaci= {'Grad':'new york', 'Ime':'John Doe'}

podaci= {k: v.titula() zado,vupodaci.stavke()}

ispisati (podaci)

Bez korištenja rječnika, kôd bi izgledao ovako:

podaci= {'Grad':'new york', 'Ime':'John Doe'}

formatirani_data= {}

zado,vupodaci.stavke():
formatirani_data[do] =v.titula()

ispisati (formatirani_data)

Kako u skupovima nema parova ključ-vrijednost, razumijevanje skupa može se definirati na isti način kao i razumijevanje popisa. Jedina razlika je uporaba kovrčavih aparatića.

Primjer: Više for petlji u razumijevanju popisa

Gore spomenuti primjer razumijevanja popisa je osnovni i koristi jedan izraz za izraz. Ispod je primjer koji koristi više for petlji i uvjetni if ​​naredba.

pridjevi= ['Disk', 'Eoan', 'Fokalno', 'Prepreden']

životinjama= ['Dingo', 'Hermelin', 'Rupa', 'Dabar']

kodnih imena= [x +''+ izaxupridjevizaiuživotinjamaakoi.počinje sa(x[0])]

ispisati (kodnih imena)

Kôd će kao izlaz prikazati ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa']. Dvije petlje for prelaze preko popisa pridjeva i životinja i njihovi članovi se spajaju pomoću razmaka, samo ako je prvo slovo obje riječi isto. Bez upotrebe razumijevanja popisa, kod bi izgledao ovako:

pridjevi= ['Disk', 'Eoan', 'Fokalno', 'Prepreden']
životinjama= ['Dingo', 'Hermelin', 'Rupa', 'Dabar']

kodnih imena= []

zaxupridjevi:
zaiuživotinje:
akoi.počinje sa(x[0]):
kodnih imena.dodati(x +''+ i)

ispisati (kodnih imena)

Primjer: Pojam razumijevanja s klauzulom if-else

Primjer u nastavku prikazat će upotrebu if i else izraza u razumijevanju popisa.

broj_popis= [1, 2, 3, 4]
drugi_popis= [5, 6, 7, 8]

proizlaziti= [Pravi ako (x + y)%2 == 0 drugo Netočno zaxubroj_popiszaiudrugi_popis]

ispisati (proizlaziti)

Prilikom prolaska kroz dva popisa, razumijevanje popisa iznad provjerava je li zbroj para elemenata paran ili nije. Pokretanjem gornjeg koda prikazat će se [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] kao izlaz. Bez razumijevanja popisa, kod bi izgledao ovako:

broj_popis= [1, 2, 3, 4]
drugi_popis= [5, 6, 7, 8]
proizlaziti= []

zaxubroj_popisa:
zaiujoš jedan_popis:
ako (x + y)%2 == 0:
proizlaziti.dodati(Pravi)
drugo:
proizlaziti.dodati(Netočno)

ispisati (proizlaziti)

Zaključak

Razumijevanje popisa pruža lijep način za pisanje čistih i sažetih naredbi petlje. Međutim, oni mogu brzo postati složeni i teško razumljivi ako se koristi više petlji i uvjetnih izraza. Na kraju, dolazi do razine udobnosti programera, ali općenito je dobra ideja napisati eksplicitan, čitljiv i lak za otklanjanje pogrešaka kod umjesto pretjeranog korištenja stenografija.