Наведите разумевања у Питхону

List Comprehensions Python



Схватање листе се често користи у Питхону за писање једноструких наредби које стварају нову листу или речник петљом преко итерабилног објекта. Овај чланак ће објаснити како се користе разумевања листе у Питхону, почевши од основног објашњења како фор петље функционишу у Питхону.

За петљу у Питхону

Наредба фор лооп у Питхону секвенцијално понавља чланове било ког објекта, листе, низа итд. У поређењу са другим програмским језицима, њена синтакса је много чистија и не захтева ручно дефинисање корака итерације и покретање итерације. Иако постоје начини да се његово понашање учини истим као и код других програмских језика (неће бити обрађено у овом чланку). Такође можете вршити одређену контролу над петљама користећи наредбе попут цонтинуе, бреак, пасс итд. Испод је једноставан пример фор петље у Питхону:







заИксу домет(10):
принт(Икс)

Горња петља фор штампаће десет бројева почев од 0 до 9.



Листа разумевања

Разумевање листе није ништа друго него стенографски / сажет начин писања вишередних петљи у једнослојни исказ. Следећи пример разумевања листе ће створити нову листу као [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] укључивањем свих вредности к у њу.



бројеви= [ИксзаИксу домет(10)]
принт (бројеви)

Имајте на уму да разумевање листе увек ствара нову листу и не мења оригиналне итерабле који се користе у изразу. Типичан израз разумевања листе мора имати клаузулу фор и може бити праћен условним изразима иф и елсе. Без разумевања листе, горњи пример ће бити написан на следећи начин:





бројеви= []
заИксу домет(10):
бројеви.додати(Икс)

принт (бројеви)

Перформансе и читљивост

Схватање листе је брже него за петље. Међутим, осим ако не понављате стотине хиљада ставки, нећете приметити велика побољшања перформанси. Док разумевање листе пружа концизан начин писања за петље, сложени изрази могу довести до лоше читљивости кода и повећане детаљности. Важно је да код буде читљив, осим ако постизање максималних перформанси није апсолутна потреба за ваш програм.

Пример: Коришћење синтаксе за разумевање листе са речницима и скуповима

Питхон речник је збирка елемената дефинисаних у паровима кључ-вредност, док је скуп збирка јединствених вредности где дупликати нису дозвољени. Разумевање листе може се користити и са Питхон -овим речницима и скуповима. Синтакса се мало разликује, уместо да умотавате израз у углате заграде, сада ћете морати да користите витичасте заграде. Такође ћете добити нови речник / скуп објеката уместо нове листе.



података= {'град':'Њу Јорк', 'име':'Н.Н. лице'}

форматтед_дата= {к: в.наслов() задо,вуподатака.ставке()}

принт (форматтед_дата)

Горњи пример ће претворити стринг вредности у велика и велика слова и створити нови речник форматтед_дата, чији ће испис бити: {‘цити’: ‘Нев Иорк’, ‘наме’: ‘Јохн Дое’}. Такође можете променити речник / поставити на место тако што ћете на левој страни навести постојећу променљиву речника.

података= {'град':'Њу Јорк', 'име':'Н.Н. лице'}

података= {к: в.наслов() задо,вуподатака.ставке()}

принт (података)

Без употребе речничких схватања, код би изгледао овако:

података= {'град':'Њу Јорк', 'име':'Н.Н. лице'}

форматтед_дата= {}

задо,вуподатака.ставке():
форматтед_дата[до] =в.наслов()

принт (форматтед_дата)

Како у скуповима нема парова кључ-вредност, разумевање скупа може се дефинисати на исти начин као разумевање листе. Једина разлика је употреба коврчавих протеза.

Пример: Више фор петљи у разумевању листе

Горе наведени пример разумевања листе је основни и користи један израз за исказ. Испод је пример који користи више фор петљи и условни израз иф.

придеви= ['Диск', „Еоан“, „Фокално“, 'Вешт']

Животиње= ['Динго', 'Хермелин', 'Јама', 'Дабар']

кодна имена= [к +''+ изаИксупридевизаиуЖивотињеакои.почиње са(Икс[0])]

принт (кодна имена)

Код ће приказати ['Дисцо Динго', 'Еоан Ермине', 'Фоцал Фосса'] као излаз. Две петље фор прелазе преко придева и листа животиња и њихови чланови се спајају помоћу размака, само ако је прво слово обе речи исто. Без употребе разумевања листе, код би изгледао овако:

придеви= ['Диск', „Еоан“, „Фокално“, 'Вешт']
Животиње= ['Динго', 'Хермелин', 'Јама', 'Дабар']

кодна имена= []

заИксупридеви:
заиуЖивотиње:
акои.почиње са(Икс[0]):
кодна имена.додати(к +''+ и)

принт (кодна имена)

Пример: Разумевање листе помоћу клаузуле иф-елсе

Пример испод приказује употребу иф и елсе наредби у разумевању листе.

нумбер_лист= [1, 2, 3, 4]
анотхер_лист= [5, 6, 7, 8]

резултат= [Истина ако (к + и)%2 == 0 елсе Нетачно заИксунумбер_листзаиуанотхер_лист]

принт (резултат)

Приликом проласка кроз две листе, разумевање листе изнад проверава да ли је збир пара елемената паран или не. Покретање горњег кода ће вам приказати [Труе, Фалсе, Труе, Фалсе, Фалсе, Труе, Фалсе, Труе, Труе, Фалсе, Труе, Фалсе, Фалсе, Труе, Фалсе, Труе] као излаз. Без разумевања листе, код би изгледао овако:

нумбер_лист= [1, 2, 3, 4]
анотхер_лист= [5, 6, 7, 8]
резултат= []

заИксулиста_бројева:
заиуанотхер_лист:
ако (к + и)%2 == 0:
резултат.додати(Истина)
елсе:
резултат.додати(Нетачно)

принт (резултат)

Закључак

Схватање листе пружа леп начин за писање чистих и сажетих наредби петље. Међутим, они могу брзо постати сложени и тешко разумљиви ако се користи више петљи и условних наредби. На крају, долази до нивоа удобности програмера, али генерално је добра идеја писати експлицитан, читљив и лак за отклањање грешака код уместо да се претерано користи скраћеницама.