Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دالة Filter

جزء من قسم المنطق وتدفق التنفيذ في رحلة Python على Coddy. الدرس 73 من 78.

تأخذ الدالة filter() أمرين رئيسيين:

  1. دالة (تحتوي على تعليمات لفحص كل عنصر)
  2. تسلسل من العناصر (مثل قائمة، أو أي مجموعة من العناصر)

فهو ينظر إلى كل عنصر في تسلسلك، عنصرًا تلو الآخر، ويحتفظ فقط بالعناصر التي تجتاز اختبار الدالة (عندما تعيد الدالة 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. الرقم 1 يدخل ← is_even تُرجع False ← يتم استبعاد الرقم
  2. الرقم 2 يدخل ← is_even تُرجع True ← يتم الاحتفاظ بالرقم
  1. الرقم 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"]
challenge icon

التحدي

سهل

أنشئ دالة باسم get_long_strings تأخذ قائمة من النصوص strings كوسيطة. يجب أن تستخدم الدالة الدالة filter() جنباً إلى جنب مع دالة lambda لاختيار النصوص التي يبلغ طولها أكثر من 5. يجب أن ترجع الدالة قائمة تحتوي على النصوص المحددة.

جرّب بنفسك

def get_long_strings(strings):
    # استخدم filter() مع دالة lambda لتحديد السلاسل ذات الطول الأكبر من 5
    # استبدل القائمة الفارغة أدناه بهذا التعبير
    long_strings = []
    
    # أعد قائمة السلاسل المحددة
    return list(long_strings)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Python عبر الإنترنت