الدالة itertools.zip_longest()
في بايثون
تعيد الدّالة itertools.zip_longest()
مُكرّرًا يُركّب العناصر من كلّ كائن من الكائنات القابلة للتّكرار المُعطاة.
إن كانت الكائنات القابلة للتّكرار غير مُتساويّة في الطّول، فستُستخدم قيمة لملء الفراغات. يُكمل التّكرار إلى أن تنتهي قيم أطول كائن من الكائنات القابلة للتّكرار.
البنية العامة
itertools.zip_longest(*iterables, fillvalue=None)
المعاملات
iterables
الكائنات القابلة للتّكرار المُراد تركيبها.
fillvalue
القيمة التي ستُملؤ بها الفراغات. إن لم تُعيّن قيمة للمُعامل فالقيمة الافتراضيّة تكون القيمةَ None
.
القيمة المعادة
مُكرّر يُعيد صفوفًا تُركّب عناصرها من عناصر الكائنات القابلة للتّكرار المُعطاة، ويملؤ الفراغات بقيمة المُعامل fillvalue
.
أمثلة
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:
>>> list(itertools.zip_longest(range(3), 'abcdef'))
[(0, 'a'), (1, 'b'), (2, 'c'), (None, 'd'), (None, 'e'), (None, 'f')]
>>> list(itertools.zip_longest(range(3), 'abcdef', fillvalue=False))
[(0, 'a'), (1, 'b'), (2, 'c'), (False, 'd'), (False, 'e'), (False, 'f')]
ملاحظات
- الدّالة مُكافئة لما يلي:
class ZipExhausted(Exception):
pass
def zip_longest(*args, **kwds):
# zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
fillvalue = kwds.get('fillvalue')
counter = len(args) - 1
def sentinel():
nonlocal counter
if not counter:
raise ZipExhausted
counter -= 1
yield fillvalue
fillers = repeat(fillvalue)
iterators = [chain(it, sentinel(), fillers) for it in args]
try:
while iterators:
yield tuple(map(next, iterators))
except ZipExhausted:
pass
- إن كانت هناك إمكانيّة أن يكون أحد الكائنات القابلة للتّكرار لا نهائيًّا، فعندئذٍ يجب استعمال دالّة للحدّ من عدد الاستدعاءات (مثل الدّالة
itertools.takewhile()
أو الدّالةitertools.islice()
مثلًا).
انظر أيضًا
- المكرِّرات Iterators في بايثون.
- المولدات Generators في بايثون.
- الدالة
zip()
: تُركّب عناصر الكائنات القابلة للتّكرار المُعطاة مع التّوقف عند أقصرها. - الدالة
itertools.takewhile()
: لمُكرّر يُعيد العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة صحيحة. - الدالة
itertools.islice()
: لمُكرّر يُعيد عناصر مُنتقاة من الكائن القابل للتّكرار المُعطى. - الدالة
list()
: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة.