الفرق بين المراجعتين لصفحة: «Python/itertools/zip longest»

من موسوعة حسوب
لا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 53: سطر 53:
         pass
         pass
</syntaxhighlight>
</syntaxhighlight>
* * إن كانت هناك إمكانيّة أن يكون أحد الكائنات القابلة للتّكرار لا نهائيًّا، فعندئذٍ يجب استعمال دالّة للحدّ من عدد الاستدعاءات (مثل الدّالة <code>[[Python/itertools/takewhile|itertools.takewhile()‎]]</code> أو الدّالة <code>[[Python/itertools/islice|itertools.islice()‎]]</code> مثلًا).
* إن كانت هناك إمكانيّة أن يكون أحد الكائنات القابلة للتّكرار لا نهائيًّا، فعندئذٍ يجب استعمال دالّة للحدّ من عدد الاستدعاءات (مثل الدّالة <code>[[Python/itertools/takewhile|itertools.takewhile()‎]]</code> أو الدّالة <code>[[Python/itertools/islice|itertools.islice()‎]]</code> مثلًا).


== انظر أيضًا ==
== انظر أيضًا ==
* [[Python/iterators|المكرِّرات Iterators في بايثون]].
* [[Python/iterators|المكرِّرات Iterators في بايثون]].
* [[Python/generators|المولدات Generators في بايثون]].
* [[Python/generators|المولدات Generators في بايثون]].
* [[Python/zip|الدالة <code>zip()‎</code> في بايثون]]: تُركّب عناصر الكائنات القابلة للتّكرار المُعطاة مع التّوقف عند أقصرها.
* الدالة <code>[[Python/zip|zip()‎]]</code>: تُركّب عناصر الكائنات القابلة للتّكرار المُعطاة مع التّوقف عند أقصرها.
* الدّالة <code>[[Python/itertools/takewhile|itertools.takewhile()‎]]</code>: لمُكرّر يُعيد العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة صحيحة.
* الدالة <code>[[Python/itertools/takewhile|itertools.takewhile()‎]]</code>: لمُكرّر يُعيد العناصرَ من الكائن القابل للتّكرار المعطى ما دامت العبارة المنطقيّة المُعطاة صحيحة.
* الدّالة <code>[[Python/itertools/islice|itertools.islice()‎]]</code>: لمُكرّر يُعيد عناصر مُنتقاة من الكائن القابل للتّكرار المُعطى.
* الدالة <code>[[Python/itertools/islice|itertools.islice()‎]]</code>: لمُكرّر يُعيد عناصر مُنتقاة من الكائن القابل للتّكرار المُعطى.
* [[Python/list|الدالة <code>list()‎</code> في بايثون]]: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة.
* الدالة <code>[[Python/list|list()]]‎</code>: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة.


== مصادر ==
== مصادر ==
سطر 67: سطر 67:
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Function]]
[[تصنيف:Python Function]]
[[تصنيف:Python Modules]]
[[تصنيف:Python itertools]]
[[تصنيف:Python itertools]]

المراجعة الحالية بتاريخ 06:15، 19 يونيو 2018

تعيد الدّالة 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()‎ مثلًا).

انظر أيضًا

مصادر