Understanding Map,Filter,Reduce

က်ြန္ေတာ္တုိ့ဒီေန့ေတာ့ python programming ရဲ့ functional approach ေတြကုိေလ့လာၾကည့္ရေအာင္။ဒီမွာသိေစခ်င္တာက ဒီ function ေတြကုိသံုးေရးမယ္ဆုိ ပုိလြယ္သြားမယ္ဆုိတာပါပဲ။စလုိက္ၾကရေအာင္!

Map

map() functionသည္ ေရွ့မွာ function တစ္ခုကုိလက္ခံျပီး ေနာက္မွာ iterate လုပ္လုိ့ရတယ့္ sequence တစ္ခုကုိလက္ခံပါတယ္။ဥပမာmap(func,[1,2,3,4]) အဲ့လုိမ်ိဳးျဖစ္ပါတယ္။

အေပါ္က code ကုိၾကည့္မယ္ဆုိ က်ြန္ေတာ္တို့ ပထမဦးဆုံး sqr() ဆုိတဲ့ function ကုိေဆာက္လုိက္ပါတယ္။ျပီးေတာ့ ၀င္လာတဲ့ ကိန္းကုိ နွစ္ခုေျမွာက္ျပီး ျပန္ပုိ့ေပးပါတယ္။ map(sqr,[1,2,3,4]) ဆုိျပီးေခါ္လုိ္ကတဲ့အခ်ိန္မွာ map() function ကေနျပီး [1,2,3,4] ထဲကေန တစ္လုံးခ်င္းဆီ function ဆီပုိ့ေပးပါတယ္။အဲ့တာေၾကာင့္ map object ကုိ list အေနနဲ့ျပန္ေျပာင္းၾကည့္လုိက္တဲ့အခါက် square ေတြထြက္လာတာျဖစ္ပါတယ္။ဒါကုိ ေအာက္ကတုိင္း list comprehension ပုံစံေရးတာေတာ့ပိုေကာင္းပါတယ္။

ဒီမွာသိထားရမွာက map သည္ function ကုိလက္ခံျပီး တန္ဖိုးေတြကုိ iterate လုပ္ကာ functionဆီပုိ့ေပးပါတယ္။ဒါေလးပါပဲ။

Filter

Filter ကေတာ့ သူ့name အတုိင္းေလ်ာ့ျပီး ဟုတ္မဟုတ္စစ္ထုတ္ေပးမွာပါ။သူလဲ လက္ခံတာကေတာ့ filter(func,[1,2,3,4]) အဲ့လုိပုံစံပဲလက္ခံပါတယ္။ေအာက္က example ေလးကုိၾကည့္လုိက္ရေအာင္

က်ြန္ေတာ္တုိ့ even ဟုတ္မဟုတ္ စစ္ေပးမယ့္ function ေလးကုိ ေရးလုိက္တယ္ number တစ္ခုက စုံကိန္းျဖစ္လားဆုိတာစစ္ဖုိ့  2 နဲ့စားလုိ့အၾကြင္း သုံည က်န္ရင္ စုံကိန္းမုိ့ True ျဖစ္သြားပါလိမ့္မယ္။မဟုတ္ရင္ False ျဖစ္သြားျပီး return ျပန္လာတာက true ဆုိအဲ့ကိန္းကုိ filter က ယူပါတယ္။False ဆုိရင္ေတာ့ မယူေတာ့ပဲပယ္ထားတာမုိ့ က်န္ခဲ့တာပါ။နားလည္မယ္လုိ့ယံုၾကည္ပါတယ္။

Reduce

Reduce ကလဲ ေလ်ာ့ခ်ေပးတယ္။ျပန္ထုတ္ေပးတဲ့ေနရာမွာသူကေတာ့ တစ္လုံးပဲထုတ္ေပးတယ္ေရွ့ကဟာေတြနဲ့မတူဘူး။exampleၾကည့္လုိက္ရေအာင္

တစ္ခုနားလည္ထားရမွာက reduce သည္ functools ေအာက္မွာရွိပါတယ္။ျပီးေတာ့ reduce သည္ function ေတြကုိ ပုိ့တဲ့အခါမွာ နွစ္ခုေပးပုိ့ပါတယ္။အကယ္လို့ add(x) လု့ိပဲေရးထားမယ္ဆုိ ေသခ်ာေပါက္ error တက္ပါမယ္။ဘာလုိ့ဆုိေတာ့ သူပုိ့တာနွစ္ခုမုိ့လုိ့  လက္ခံလဲနွစ္ခုလက္ခံပါ။အလုပ္လုပ္ပုံကေတာ့ ရွင္းပါတယ္။ပထမဆုံး ၁ ၂ ကုိေပးလုိက္တယ္ return x+y ဆုိေတာ့ ၃ ရလာတယ္။အဲ့ ၃ ကုိ x ေနရာကုိေပးလုိက္ျပီး [1,2,3,4] ထဲက ေနာက္တစ္လုံးျဖစ္တဲ့ 3 ကုိ y ေနရာကုိေပးလုိက္ပါတယ္။ျပီးေတာ့ ၃ + ၃ ဆုိေတာ့ ၆ရလာေတာ့ ၆ကုိ x ေနရာထပ္ေပးျပီး list ထဲက 4 ကုိ yေနရာကုိပုိ့ေပးလုိ့ ၁၀ထြက္လာတာပါ။အားလုံးနားလည္မယ္ထင္ပါတယ္။

ေက်းဇူးတင္ပါတယ္။

Facebook Page Link: https://www.facebook.com/pyrobocity/

Subscribe me-Click Here To Subscribe Me On Youtube

 

Share:

Leave a Reply