الفرق بين المراجعتين ل"Python/filter"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'Python/lambda-expressions' ب'Python/lambda_expressions')
 
سطر 24: سطر 24:
  
 
== أمثلة ==
 
== أمثلة ==
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، المثال الثّاني يستخدم [[Python/lambda-expressions|تعبير lambda]]:
+
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، المثال الثّاني يستخدم [[Python/lambda_expressions|تعبير lambda]]:
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
>>> values = filter(None, [1, 2, 'ABC', 0, None, '', 4]) # مرّرنا قيمة فارغة كدالّة
 
>>> values = filter(None, [1, 2, 'ABC', 0, None, '', 4]) # مرّرنا قيمة فارغة كدالّة

المراجعة الحالية بتاريخ 14:37، 29 مايو 2018

تعيد الدّالة filter()‎ مُكرّرًا (iterator) من عناصر الكائن القابل للتكرار المُعطى حسب شرطٍ تُحدّده الدّالة المُعطاة. وتُستخدم لترشيح عناصر الكائن القابل للتّكرار.

البنية العامة

filter(function, iterable)

المعاملات

function

الدّالة المُرشّحةُ التي ستُحدّد ما إذا كان العنصر سينضم إلى المُكرّر النّاتج أو لا.

ستستقبل الدّالة العنصر وتُعيد إمّا القيمة True أو القيمة False، إن أعادت الدّالة المُرشّحةُ القيمة True للعنصر المُعطى لها، فسينضمّ إلى المُكرّر النّاتج، ولن ينضمّ عكسَ ذلك.

إن كانت قيمة هذا المُعاملِ القيمةَ None، فسيُعمل بقواعد التّحقّق من صحّة الكائن كما هو موضّح في صفحة القيم المنطقيّة، أي أنّ جميع العناصر التي تُساوي False ستُحذف.

iterable

الكائن القابل للتّكرار الذي نريد ترشيحه.

يُمكن أن يكون سلسلةً من القيم، أو مُكرّرًا، أو أي كائن يُمكن الوصول إلى عناصره على حدة باستخدام التّكرار.

القيمة المعادة

مُكرّر يحتوي على العناصر التي أعادت لها الدّالة المُعطاة القيمة True.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، المثال الثّاني يستخدم تعبير lambda:

>>> values = filter(None, [1, 2, 'ABC', 0, None, '', 4]) # مرّرنا قيمة فارغة كدالّة
>>> list(values) # نُحوّل الكائن النّاتج إلى قائمة لنرى عناصره
[1, 2, 'ABC', 4]

>>> numbers = (1, 2, 3, 4, 5)
>>> less_than_three = filter(lambda number: number < 3, numbers) # نُمرّر دالّة لترشيح الأعداد الأصغر من ثلاثة
>>> list(less_than_three)
[1, 2]

>>> def is_even(number): # يُمكن كذلك إنشاء دالّة مُتعدّدة الأسطر
...     if number % 2 == 0: # إن كان باقي القسمة على اثنان يُساوي صفر، فالعدد زوجيّ
...         return True
...     else: # العدد فرديّ إن لم يكن باقي قسمته على اثنان يُساوي صفرًا
...         return False
... 
>>> is_even(1)
False
>>> is_even(4)
True
>>> is_even(6)
True
>>> nums = [1, 2, 3, 4, 5, 6] # قائمة أعداد
>>> even_nums = filter(is_even, nums) # ترشيح قائمة الأعداد باستخدام الدّالة التي أنشأناها
>>> list(even_nums) # عرض عناصر النّتيجة بعد ترشيح قائمة الأعداد
[2, 4, 6]

ملاحظات

  • الدّالة filter()‎ مُكافئة لما يلي إن لم تكن قيمة المُعامل function تُساوي None:
(item for item in iterable if function(item))
  • ومُكافئة لما يلي إن كانت قيمة المُعامل function تُساوي None:
(item for item in iterable if item)

انظر أيضًا

مصادر