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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إضافة الصّفحة)
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>filter()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>filter()‎</code> في بايثون}}</noinclude>
تعيد الدّالة <code>filter()‎</code> مُكرّرًا (iterator) من عناصر الكائن القابل للتكرار المُعطى حسب شرطٍ تُحدّده الدّالة المُعطاة المُرشّحة.
+
تعيد الدّالة <code>filter()‎</code> مُكرّرًا (iterator) من عناصر الكائن القابل للتكرار المُعطى حسب شرطٍ تُحدّده الدّالة المُعطاة. وتُستخدم لترشيح عناصر الكائن القابل للتّكرار.
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 10: سطر 10:
 
=== <code>function</code> ===
 
=== <code>function</code> ===
 
الدّالة المُرشّحةُ التي ستُحدّد ما إذا كان العنصر سينضم إلى المُكرّر النّاتج أو لا.
 
الدّالة المُرشّحةُ التي ستُحدّد ما إذا كان العنصر سينضم إلى المُكرّر النّاتج أو لا.
ستستقبل الدّالة العنصر وتُعيد إمّا القيمة <code>True</code> أو القيمة <code>False</code>، إن أعادت الدّالة القيمة <code>True</code> للعنصر المُعطى لها، فسينضمّ إلى المُكرّر النّاتج، ولن ينضمّ عكسَ ذلك.
 
  
إن كانت قيمة هذا المُعاملِ القيمةَ <code>None</code>، فسيُعمل بقواعد التّحقّق من صحّة الكائن كما هو موضّح في صفحة القيم المنطقيّة، أي أنّ جميع العناصر التي تُساوي <code>False</code> ستُحذف.
+
ستستقبل الدّالة العنصر وتُعيد إمّا القيمة <code>True</code> أو القيمة <code>False</code>، إن أعادت الدّالة المُرشّحةُ القيمة <code>True</code> للعنصر المُعطى لها، فسينضمّ إلى المُكرّر النّاتج، ولن ينضمّ عكسَ ذلك.
 +
 
 +
إن كانت قيمة هذا المُعاملِ القيمةَ <code>None</code>، فسيُعمل بقواعد التّحقّق من صحّة الكائن كما هو موضّح في صفحة [[Python/boolean|القيم المنطقيّة]]، أي أنّ جميع العناصر التي تُساوي <code>False</code> ستُحذف.
  
 
=== <code>iterable</code> ===
 
=== <code>iterable</code> ===
 
الكائن القابل للتّكرار الذي تريد ترشيحه.
 
الكائن القابل للتّكرار الذي تريد ترشيحه.
 +
 
يُمكن أن يكون سلسلةً من القيم، أو مُكرّرًا، أو أي كائن يُمكن الوصول إلى عناصره على حدة باستخدام التّكرار.
 
يُمكن أن يكون سلسلةً من القيم، أو مُكرّرًا، أو أي كائن يُمكن الوصول إلى عناصره على حدة باستخدام التّكرار.
  
سطر 22: سطر 24:
  
 
== أمثلة ==
 
== أمثلة ==
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:
+
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، المثال الثّاني يستخدم [[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]) # مرّرنا قيمة فارغة كدالّة
سطر 63: سطر 65:
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
* [[Python/iterators|المكرِّرات Iterators في بايثون]]
+
* [[Python/iterators|المكرِّرات Iterators في بايثون.]]
* [[Python/generators|المولدات Generators في بايثون]]
+
* [[Python/generators|المولدات Generators في بايثون.]]
 
* [[Python/list|القوائم lists في بايثون]].
 
* [[Python/list|القوائم lists في بايثون]].
* [[Python/itertools/filterfalse‎()‎| <code>itertools.filterfalse‎()‎</code>]] للترشيح بطريقة مُعاكسة (تُقبل فقط العناصر التي تُعيد الدّالة المُعطاة القيمة <code>False</code> لها).  
+
* <code>[[Python/itertools/filterfalse|itertools.filterfalse‎()‎]]</code> للترشيح بطريقة مُعاكسة (تُقبل فقط العناصر التي تُعيد الدّالة المُعطاة لها القيمةَ <code>False</code>).  
 
== مصادر ==
 
== مصادر ==
 
* [https://docs.python.org/3/library/functions.html#filter قسم الدالة filter في صفحة Functions في توثيق Python الرسمي].
 
* [https://docs.python.org/3/library/functions.html#filter قسم الدالة filter في صفحة Functions في توثيق Python الرسمي].

مراجعة 19:25، 1 مايو 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)

انظر أيضًا

مصادر