هي ثلاث وضائف مهمة جدا و توفر الكثير من الوقت في كتابة الأكواد
تستعمل ثلاثتها مع القوائم
أولا أشرح الكلمة المحجوزة : lambda
تستعمل لتعريف الدوال على الشكل التالي
lambda input arguments:output equations lambda x:x**2 lambda x:-x lambda a,b,c:a+b-c**2
1 map
تستعمل هذه الوظيفة لتطبيق وظيفة معينة على كامل عناصل القائمة واحدا واحدا
تحويلهم ل str
T=[1,2,3,4,5] T=map(str,T)
أو حساب التربيع
T=map(lambda x:x**2,T)
2 reduce
لدينا قائمة معينة
نريد تطبيق دالة معينة: حساب أصغر قيمة، أكبر قيمة، المضاعف المشترك الأصغر، القاسم المشترك الأكبر إلخ
لكن الدالة لها 2 باراماتر فقط,,,,,,,
تستعمل هنا الدالة reduce
بحيث تقوم بتطبيق الدالة على أول عنصرين، و بعدها يتم تطبيق الدالة على النتيجة مع العنصر الثالث، و النتيجة مع العنصر الرابع
و هكذا لغاية آخر عنصر
مثال عملي:
list=[1,2,3,4,5,6,7]
نستعمل مثال بسيط جدا فقط لفهم كيفية العمل:
مثلا نريد حساب ناتج ضرب جميع العناصر ببعضها البعض
و نستعمل الدالة
lambda x,y:x*y
الكود :
S=reduce(lambda x,y:x+y,list))
شرح كيف يعمل الكود
أولا يحسب الجداء 1*2 الناتج 2
ثم يحسب الجداء 2 *3 الناتج 6
ثم يحسب الجداء 6*4 الناتج 24
ثم يحسب الجداء 24*7 الناتج 168
3 filer
كما هو واضح من اسمها فهي تستعمل للفلترة (إختيار مجموعة عناصر من قائمة باستعمال شرط معين)
باستعمال دالة ترجع True أو False
ملاحضة هامة:
جميع الأعداد الموجبة و السالبة تعتبر :True
الصفر يعتبر :False
أي سلسلة حرفية لدينا طولها أكبر من أو يساوي الواحد تعتبر: True
سلسلة حرفية طولها أكبر من أو يساوي الواحد يعني لا تساوي "" سلسلة فارغة
السلسلة الفارغة "" تعتبر :False
دالة تقوم بتحديد إن كان العنصر موجبا
lambda x:x<0
دالة تقوم بتحديد إن كان العدد زوجي (مضاف ل 2)
lambda x:x%2==0
مثلا ليدنا قائمة و نريد إختيار العناصر المضاع ل 2 ، أو مثلا إختيار العناصر الموجبة أو السالبة
h=[-1,3 5,11, 14, -6 , 0, -15]
الكود :
h=filter(lambda x:x>=0,h)