هناك ثلاث وظائف أساسية في بايثون، وهي مرشح () وخريطة () وتقليل () وهي توفر لنا وظائف التصفية ورسم الخرائط والتجميع على التوالي. في القسم السابق، استخدمنا ببساطة الدالة filter() مع دالة مجهولة أدناه، وسنقدم استخدامها بالتفصيل.
عند تصفية البيانات وتصفيتها، نستخدم عادةً وظيفة التصفية () لمساعدتنا في حل المشكلة بسرعة، وتنسيق تركيبها هو:
عامل التصفية (وظيفة، كائن قابل للتكرار)
في وظيفة التصفية، ضع طريقة التصفية أو التصفية الخاصة بنا، أي اسم الوظيفة ، في المقدمة، وقم بتخزين الكائن القابل للتكرار في الخلف. لننظر إلى المثال التالي:
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))# فقط بحاجة إلى بعض أسماء الوظائف، ليست هناك حاجة إلى معلمات
نتيجة الإخراج:
<filterobjectat0x034C2DD8>
فيما يتعلق بهذا المثال، قمنا أولاً بتعريف دالة test()، والتي ترجع قيمتها إذا كان x رقمًا زوجيًا، ثم تستخدم وظيفة test() لتصفية قائمة my_list من خلال وظيفة filter()، ولكن نتيجة الإخراج هي < كائن التصفية عند 0x034C2DD8>، هنا نحتاج إلى ملاحظة أن القيمة المرجعة لوظيفة التصفية () هي كائن قابل للتكرار، ونحتاج إلى الوصول إلى القيم بشكل متكرر، أو استخدام وظيفة القائمة () لفرض تحويل النوع.
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))foriinfilter(test,my_list):print('بعد بيانات التكرار: '،i)print('استخدم طريقة القائمة ():'،list(filter(test,my_list)))
الإخراج هو:
البيانات في التكرار: 2 البيانات في التكرار: 4 البيانات في التكرار: 6 استخدام طريقة القائمة (): [2، 4، 6]
لقد استخدمنا وظيفة الخريطة () عدة مرات من قبل، على سبيل المثال، عندما نقوم بإدخال قيم متعددة، سوف نستخدم وظيفة الخريطة () عندما نحتاج إلى إدخال أربع قيم:
أ، ب، ج، د = خريطة (int، input().split ()) طباعة (أ، ب، ج، د)
تنسيق بناء الجملة لوظيفة الخريطة () هو:
خريطة (وظيفة، كائن قابل للتكرار)
عند استخدام وظيفة الخريطة ()، نستخدمها في الغالب لمعالجة البيانات، ويتم تخزين البيانات الموجودة في الكائن القابل للتكرار بعد معالجتها بواسطة الوظيفة، ونستمر في استخدام وظيفة القائمة () للتخزين.
دعونا نلقي نظرة أولاً على المثال أعلاه لإدخال أربع قيم. إن Int عبارة عن دالة، والقيمة المدخلة بواسطة input().splite هي كائن قابل للتكرار، ويتم تخزينه في كائن الخريطة بعد معالجته بواسطة الدالة int.
يمكننا استخدام الدالة Map() لمعالجة كافة البيانات بالتسلسل من خلال الدالة، راجع المثال التالي:
نقوم بتخزين الحروف في قائمة، وإذا كان هناك حرف صغير، نجعله كبيرًا.
الرمز هو كما يلي:
deftest(x):ifx.islower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']print(list(map (اختبار،my_list)))
الإخراج هو:
['د'،'O'،'T'،'C'،'P'،'P']
ستحكم الدالة test() أولاً على x إذا كان حرفًا صغيرًا، فستعيد قيمته.
يتم استخدام الدالة التخفيض () لتجميع الكائنات القابلة للتكرار من خلال الطرق الوظيفية.
تنسيق بناء الجملة هو:
تقليل (وظيفة، كائن قابل للتكرار [، القيمة الأولية])
على سبيل المثال، نحن نعلم أن القائمة هي [1،2،3،4]، ونحتاج إلى إيجاد مجموع جميع العناصر الموجودة في القائمة مضروبًا بالتسلسل. يمكننا استخدام وظيفة تقليل ().
تم تعريف الدالة fromfunctoolsimportreduce#reduce في وحدة functools ويجب تقديمها deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
الإخراج هو:
يقدم السطر الأول من التعليمات البرمجية هذه الطريقة، وسيتم شرح الوحدة لاحقًا. تقوم وظيفة الاختبار () بإرجاع بيانات لضربها، ثم تتم معالجة قائمة my_list من خلال وظيفة التخفيض ().
عملية المعالجة هي كما يلي:
نفذ الخطوة الأولى أولاً، ثم احصل على النتيجة واضربها بالخطوة التالية، ثم انتقل إلى الرقم الأخير.
يتم استخدام أول وظيفتين من هذه الوظائف الثلاث بشكل شائع. إن إتقان هذه الوظائف الثلاث يمكن أن يساعدنا في حل سلسلة من المشكلات المعقدة.