Լամբդա Python-ում, եթե, բայց առանց ուրիշի
Python-ը ճկուն և ուժեղ լեզու է, որն ապահովում է ծրագրավորման տարբեր ոճեր տեղավորելու բազմաթիվ հնարավորություններ: Լամբդա ֆունկցիան՝ ձեր կոդում հակիրճ, անանուն գործառույթներ գրելու գործիք, այս բնութագրիչներից մեկն է: Այս հոդվածում մենք կքննարկենք լամբդա ֆունկցիան «եթե» հայտարարության հետ համատեղելու գաղափարը՝ առանց «այլ» կետի օգտագործման։ Մի քանի ուսանելի օրինակներ կօգտագործվեն նաև ձեր ըմբռնումն ավելի խորացնելու համար:
Հասկանալով լամբդայի գործառույթները Python-ում
Python-ում անանուն ֆունկցիաները, որոնք հայտարարված են «lambda» հիմնաբառով, հայտնի են որպես լամբդա ֆունկցիաներ։ Դրանք կարող են հատկապես հարմար լինել, երբ դուք պահանջում եք մեկ, կարճ ֆունկցիա, բայց չեք ցանկանում այն պայմանական ձևով սահմանել՝ օգտագործելով «def» հիմնաբառը: Ահա լամբդա ֆունկցիայի պարզ օրինակ.
multiply = lambda x, y: x * y
print(multiply(5, 6))
Արդյունք
30
Lambda ֆունկցիան lambda x, y: x * y այս նկարում ընդունում է երկու արգումենտ և վերադարձնում է այդ երկու արգումենտների գումարը: Այն տրվում է բազմապատկվող փոփոխականին, որն այնուհետև կարող է օգտագործվել սովորական ֆունկցիայի նման:
Լամբդա եթե, բայց առանց ուրիշի:
Լամբդա ֆունկցիայի մեջ մենք սովորաբար կարող ենք օգտագործել if-else պայմանական հայտարարությունները, ինչպիսիք են −-ն
check_even = lambda x: True if x % 2 == 0 else False
print(check_even(4))
Արդյունք
True
«Այլապես» դրույթը միշտ չէ, որ կարող է անհրաժեշտ լինել lambda ֆունկցիայի ներսում «եթե» հայտարարություն օգտագործելիս: «Ուրիշ» դրույթը պահանջվում է Python-ում լամբդա ֆունկցիայի ներսում «եթե» հայտարարության շարահյուսությամբ: Օգտագործելով Python-ի որոշ ներկառուցված գործառույթներ՝ այս անհրաժեշտությունից կարելի է խուսափել:
Եկեք քննենք լամբդայի օգտագործման որոշ իրական դեպքեր «եթե»-ով, բայց առանց «այլ» հայտարարության:
Օրինակ 1. Ցուցակի զտում
numbers = [5, 12, 17, 18, 24, 32]
filtered_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(filtered_numbers))
Արդյունք
[12, 18, 24, 32]
Filter() ֆունկցիան օգտագործվում է այս օրինակում՝ լամբդա ֆունկցիան ամբողջ թվերի ցանկի յուրաքանչյուր տարրի վրա կիրառելու համար։ Տարրը հայտնվում է ելքային ցանկում, եթե lambda ֆունկցիան վերադարձնում է True: Հիշեք, որ մենք օգտագործել ենք «եթե» լամբդա ֆունկցիան արդյունավետ՝ առանց «այլապես» դրույթ պահանջելու:
Օրինակ 2. Ցանկի տարրերի փոխակերպում
numbers = [5, 12, 17, 18, 24, 32]
transformed_numbers = map(lambda x: x**2 if x % 2 == 0, numbers)
print(list(transformed_numbers)) # Raises a SyntaxError
Արդյունք
File "/home/cg/root/64b40d33edea0/main.py", line 2
transformed_numbers = map(lambda x: x**2 if x % 2 == 0, numbers)
^^^^^^^^^^^^^^^^^^
SyntaxError: expected 'else' after 'if' expression
Այս օրինակը ցույց է տալիս, որ «if» քարտեզի ներսում lambda ֆունկցիայի() օգտագործելու փորձն առանց «else»-ի առաջացնում է SyntaxError: Այնուամենայնիվ, դուք կարող եք կանխել դա՝ ընդօրինակելով «եթե»-ի պահվածքը՝ առանց «այլ»-ի՝ վերադարձնելով None-ը (Python-ի համարժեք «ոչ արժեք») այն բաղադրիչների համար, որոնք չեն բավարարում պայմանը:
numbers = [5, 12, 17, 18, 24, 32]
transformed_numbers = map(lambda x: x**2 if x % 2 == 0 else None, numbers)
print(list(transformed_numbers))
Արդյունք
[None, 144, None, 324, 576, 1024]
Թարմացված օրինակում None-ն օգտագործվում է պահանջներին չհամապատասխանող թվերի փոխարեն:
Օրինակ 3. Ցուցակի ըմբռնման օգտագործում
Python-ի մեկ այլ առանձնահատկությունն է ցուցակի ըմբռնումը, որն ապահովում է «եթե»-ի իրականացման ավելի պիթոնիկ մեթոդ՝ առանց «այլ»-ի լամբդա ֆունկցիայի մեջ:
numbers = [5, 12, 17, 18, 24, 32]
squared_numbers = [x**2 for x in numbers if x % 2 == 0]
print(squared_numbers)
Արդյունք
[144, 324, 576, 1024]
Այստեղ մենք, ըստ էության, հասնում ենք «եթե» վարքագծին առանց «ուրիշի» վարքագծի՝ միայն թվերը քառակուսելով, եթե դրանք զույգ են: Մեզ մնում են միայն զույգ ամբողջ թվերի քառակուսիները բոլոր կենտ թվերն անտեսելուց հետո:
Արդյունավետության համար լամբդա ֆունկցիաների օգտագործումը
օգտագործելով ներկառուցված Python մեթոդները, ինչպիսիք են filter()-ը և map()-ը կամ կառուցվածքները, ինչպիսիք են ցուցակի ըմբռնումը, մենք դեռ կարող ենք արդյունավետ ձևավորել պայմաններ, որոնք գործում են «եթե»-ի նման՝ առանց «այլ»-ի, չնայած «այլ» դրույթի շարահյուսական պահանջին՝ if' հայտարարություն լամբդա ֆունկցիայի մեջ:
Ձեր Python կոդը կլինի ավելի պարզ և արդյունավետ՝ շնորհիվ lambda ֆունկցիաների, որոնք ապահովում են շատ հակիրճ և ընթեռնելի մոտեցում՝ ֆունկցիաները գրելու համար: Երբ դրանք ճիշտ օգտագործվեն, դրանք կարող են մեծապես պարզեցնել ձեր կոդը և բարելավել աշխատանքը, հատկապես տվյալների մշակման աշխատանքների համար:
Հիշեք, որ պրակտիկան լամբդայի գործառույթները հասկանալու բանալին է: Որտեղ իմաստ ունի, փորձեք դրանք ներառել ձեր Python կոդի մեջ: Շուտով դուք հմուտ կլինեք օգտագործել այս հզոր գործիքը՝ ձեր Python ծրագրավորման արդյունավետությունն ու արդյունավետությունը բարելավելու համար:
Եզրակացություն
Python-ի խիստ շարահյուսական սահմանափակումների պատճառով «եթե»-ով, բայց առանց «այլ»-ի հետ լամբդա ֆունկցիան օգտագործելու գաղափարն առաջին հայացքից կարող է հակասական թվալ: Բայց դուք կարող եք իրականացնել այս վարքագիծը Python-ի ներկառուցված գործառույթների կամ կառուցվածքների միջոցով, եթե դուք հստակ տիրապետում եք լամբդա ֆունկցիաներին: Այս մեթոդը կարող է ապահովել կոդ, որն ավելի արդյունավետ և ընթեռնելի է և չափազանց օգտակար է ֆունկցիոնալ ծրագրավորման համար: