• 1
kenham

شرح map filter reduce

سؤال

هي ثلاث وضائف مهمة جدا و توفر الكثير من الوقت في كتابة الأكواد

تستعمل ثلاثتها مع القوائم

 

أولا أشرح الكلمة المحجوزة : 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)

 

4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

0 إجابة على هذا السؤال .

لاتوجد إجابات على هذا السؤال حتى الآن .

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .