الفرق بين المراجعتين لصفحة: «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>None</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/ | * <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)
انظر أيضًا
- المكرِّرات Iterators في بايثون.
- المولدات Generators في بايثون.
- القوائم lists في بايثون.
itertools.filterfalse()
للترشيح بطريقة مُعاكسة (تُقبل فقط العناصر التي تُعيد الدّالة المُعطاة لها القيمةَFalse
).