دالة Filter
جزء من قسم المنطق وتدفق التنفيذ في رحلة Python على Coddy. الدرس 73 من 78.
تأخذ الدالة filter() أمرين رئيسيين:
- دالة (تحتوي على تعليمات لفحص كل عنصر)
- تسلسل من العناصر (مثل قائمة، أو أي مجموعة من العناصر)
فهو ينظر إلى كل عنصر في تسلسلك، عنصرًا تلو الآخر، ويحتفظ فقط بالعناصر التي تجتاز اختبار الدالة (عندما تعيد الدالة True).
على سبيل المثال:
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6] # هذه مجرد قائمة من الأرقام
even_numbers = filter(is_even, numbers)
print(list(even_numbers))
# المخرجات: [2, 4, 6]ما الذي حدث هنا:
- لدينا قائمة من الأرقام: [1, 2, 3, 4, 5, 6]
- تأخذ الدالة
filterكل رقم، واحدًا تلو الآخر - وتقوم بيمرير كل رقم إلى دالتنا
is_even
- إذا أرجعت الـ function القيمة True، فإنها تحتفظ بـ that الرقم
- إذا أرجعت الـ function القيمة False، فإنها تستبعد that الرقم
يمكنك التفكير فيه كمرشح (مصفاة):
- الرقم 1 يدخل ←
is_evenتُرجع False ← يتم استبعاد الرقم - الرقم 2 يدخل ←
is_evenتُرجع True ← يتم الاحتفاظ بالرقم
- الرقم 3 يدخل في العملية ←
is_evenترجع False ← يتم إسقاط الرقم وهكذا...
يمكنك أيضًا استخدام دالة سريعة من سطر واحد (تسمى `lambda`) بدلاً من تعريف دالة منفصلة:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda n: n % 2 == 0, numbers)
print(list(even_numbers))
# المخرجات: [2, 4, 6]تعمل دالة filter() مع أي مجموعة من العناصر - ليس فقط numbers. إليك مثالاً باستخدام السلاسل النصية (strings):
words = ["apple", "banana", "cherry", "date"]
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words))
# Output: ["banana", "cherry"]التحدي
سهلأنشئ دالة باسم get_long_strings تأخذ قائمة من النصوص strings كوسيطة. يجب أن تستخدم الدالة الدالة filter() جنباً إلى جنب مع دالة lambda لاختيار النصوص التي يبلغ طولها أكثر من 5. يجب أن ترجع الدالة قائمة تحتوي على النصوص المحددة.
جرّب بنفسك
def get_long_strings(strings):
# استخدم filter() مع دالة lambda لتحديد السلاسل ذات الطول الأكبر من 5
# استبدل القائمة الفارغة أدناه بهذا التعبير
long_strings = []
# أعد قائمة السلاسل المحددة
return list(long_strings)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1استكشاف المتغيرات
الثوابتإسناد المتغيرات المتعددةتبديل المتغيراتالمتغيرات النائبةتقريب الأرقامتحويل القوائم4تطبيق سجل جهات الاتصال
عرض القائمةإضافة جهة اتصال7المجموعات - الجزء الثاني
العمليات الرياضية - الجزء الأولالعمليات الرياضية - الجزء الثانيمراجعة - البحث عن الكنزالمجموعات الجزئية والمجموعات الشاملةالتكرار عبر المجموعاتمراجعة - متتبع البطولة10أساسيات تضمين القوائم (List Comprehensions)
الصيغة البرمجيةإنشاء قوائم بسيطةإضافة الشروطاستخدام تجميع البياناتمراجعة - بيت القوائممراجعة - عناصر الحرية5اتخاذ القرارات المتقدم
المعامل الثلاثيالتحقق من الانتماءالتحقق من الهويةأخطاء الإزاحةمراجعة - فلتر العطلات8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3القواميس - الجزء الثاني
دوال القواميسالقواميس المتداخلةالتحقق من وجود المفاتيحالتكرار عبر القواميسمراجعة - عداد التكرار9تجميع البيانات المتقدم
استخدام Sumإيجاد الحد الأدنى والأقصىفرز البيانات بكفاءةمراجعة - Dictionary Sorter12أساسيات معالجة الأخطاء
ما هي معالجة الأخطاء؟كتلة Try و Exceptالتعامل مع استثناءات متعددةمراجعة - أخطاء عربة التسوقتدرّب بنفسك: مترجم Python عبر الإنترنت