الدالة itertools.takewhile()
في بايثون
تعيد الدّالة 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
انظر أيضًا
- المكرِّرات Iterators في بايثون.
- المولدات Generators في بايثون.
- تعبير lambda.
- الدّالة
itertools.dropwhile()
: لمُكرّر يبدأ بإعادة العناصر فقط عند عدم تحقّق الشّرط.