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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إضافة الصّفحة)
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>itertools.dropwhile()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>itertools.dropwhile()‎</code> في بايثون}}</noinclude>
تعيد الدّالة <code>itertools.dropwhile()‎</code> مُكرّرًا يُزيل العناصر من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة (التي تكون دالّة تستقبل العنصر وتُعيد قيمة منطقيّة) تُساوي القيمة المنطقيّة <code>True</code>؛ بعد أن تُخالف العبارة المنطقيّة قيمةً منطقيّة صحيحة، يستمرّ المُكرّر بإعادة العناصر المتبقيّة كلّها.
+
تعيد الدّالة <code>itertools.dropwhile()‎</code> مُكرّرًا يُزيل العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة (التي تكون دالّة تستقبل العنصر وتُعيد قيمة منطقيّة) تُساوي القيمة المنطقيّة <code>True</code>؛ بعد أن تُخالف العبارة المنطقيّة قيمةً منطقيّة صحيحة، يستمرّ المُكرّر بإعادة العناصر المتبقيّة كلّها.
  
لاحظ أنّ المُكرّر لا يُنتج أي مُخرجات حتى تُساوي العبارة المنطقيّة القيمةَ <code>False</code>، ما يعني أنّها قد تحتاج إلى وقت طويل للبدء في إعادة القيم.
+
لاحظ أنّ المُكرّر لا يُنتج أي مُخرجات حتى تُساوي العبارة المنطقيّة القيمةَ <code>False</code>، ما يعني أنّه قد يحتاج إلى وقت طويل للبدء في إعادة القيم.
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 12: سطر 12:
 
=== <code>predicate</code> ===
 
=== <code>predicate</code> ===
 
العبارة المنطقيّة التي ستُحدّد ما إذا كان المُكرّر سيتوقّف عن تجاهل العناصر ويبدأ في إعادة بقيّة العناصر أو لا.
 
العبارة المنطقيّة التي ستُحدّد ما إذا كان المُكرّر سيتوقّف عن تجاهل العناصر ويبدأ في إعادة بقيّة العناصر أو لا.
عادة ما تكون دالّة تستقبل العنصر، إن أعادت القيمة <code>True</code> فسيُتجاهل العنصر، وما إن تُعيد القيمةَ <code>False</code> حتى تبدأ بإعادة جميع العناصر المُتبقيّة كلّها.
+
 
 +
عادة ما تكون دالّة تستقبل العنصر، إن أعادت القيمة <code>True</code> فسيُتجاهل العنصر، وما إن تُعيد القيمةَ <code>False</code> حتى يبدأ المُكرّر بإعادة جميع العناصر المُتبقيّة كلّها.
  
 
=== <code>iterable</code> ===
 
=== <code>iterable</code> ===
سطر 21: سطر 22:
  
 
== أمثلة ==
 
== أمثلة ==
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يُعيد المُكرّر جميع العناصر بدءًا من العنصر 6 لأنّه لا يُحقّق شرط تعبير lambda المُعطى:
+
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يُعيد المُكرّر جميع العناصر بدءًا من العنصر <code>6</code> لأنّه لا يُحقّق شرط [[Python/lambda-expressions|تعبير lambda]] المُعطى:
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
>>> import itertools
 
>>> import itertools
سطر 29: سطر 30:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
لاحظ أنّ طريقة استعمال الدّالة مُشابهة لطريقة استعمال الدّالة filter()‎.
+
لاحظ أنّ طريقة استعمال الدّالة مُشابهة لطريقة استعمال الدّالة <code>[[Python/filter|filter()]]</code>‎.
  
 
== ملاحظات ==
 
== ملاحظات ==
سطر 48: سطر 49:
 
* [[Python/iterators|المكرِّرات Iterators في بايثون]].
 
* [[Python/iterators|المكرِّرات Iterators في بايثون]].
 
* [[Python/generators|المولدات Generators في بايثون]].
 
* [[Python/generators|المولدات Generators في بايثون]].
 +
* [[Python/lambda-expressions|تعبير lambda]].
 +
* الدّالة <code>[[Python/filter|filter()]]</code>‎.
  
 
== مصادر ==
 
== مصادر ==

مراجعة 02:17، 10 يونيو 2018

تعيد الدّالة itertools.dropwhile()‎ مُكرّرًا يُزيل العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة (التي تكون دالّة تستقبل العنصر وتُعيد قيمة منطقيّة) تُساوي القيمة المنطقيّة True؛ بعد أن تُخالف العبارة المنطقيّة قيمةً منطقيّة صحيحة، يستمرّ المُكرّر بإعادة العناصر المتبقيّة كلّها.

لاحظ أنّ المُكرّر لا يُنتج أي مُخرجات حتى تُساوي العبارة المنطقيّة القيمةَ False، ما يعني أنّه قد يحتاج إلى وقت طويل للبدء في إعادة القيم.

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

itertools.dropwhile(predicate, iterable)

المعاملات

predicate

العبارة المنطقيّة التي ستُحدّد ما إذا كان المُكرّر سيتوقّف عن تجاهل العناصر ويبدأ في إعادة بقيّة العناصر أو لا.

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

iterable

الكائن القابل للتّكرار المرغوب إزالة العناصر منه ما دامت قيمة predicate المُعادَة تُساوي True.

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

مُكرّر يحتوي على جميع العناصر منذ العنصر الذي أُعيدت له العبارة المنطقيّة القيمةَ False.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يُعيد المُكرّر جميع العناصر بدءًا من العنصر 6 لأنّه لا يُحقّق شرط تعبير lambda المُعطى:

>>> import itertools
>>> it = itertools.dropwhile(lambda x: x<5, [1,4,6,4,1])
>>> list(it)
[6, 4, 1]

لاحظ أنّ طريقة استعمال الدّالة مُشابهة لطريقة استعمال الدّالة filter()‎.

ملاحظات

الدّالة مُكافئة لما يلي:

def dropwhile(predicate, iterable):
    # dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
    iterable = iter(iterable)
    for x in iterable:
        if not predicate(x):
            yield x
            break
    for x in iterable:
        yield x

انظر أيضًا

مصادر