الدالة itertools.takewhile()‎ في بايثون

من موسوعة حسوب
مراجعة 06:15، 19 يونيو 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (←‏مصادر)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعيد الدّالة itertools.takewhile()‎ مُكرّرًا يُعيد العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة (التي تكون دالّة تستقبل العنصر وتُعيد قيمة منطقيّة) تُساوي القيمة المنطقيّة True.

تعمل هذه الدّالة بطريقة مُعاكسة للدّالة itertools.dropwhile()‎ التّي تبدأ في إعادة القيم عند عدم تحقّق شرط العبارة المنطقيّة.

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

itertools.takewhile(predicate, iterable)

المعاملات

predicate

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

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

iterable

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

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

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

أمثلة

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

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

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

ملاحظات

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

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

انظر أيضًا

مصادر