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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

تعيد الدّالة itertools.cycle()‎ مُكرّرًا يُعيد عناصر الكائن القابل للتّكرار المُعطى ويحفظ نسخة منه، عندما تنتهي قيم الكائن القابل للتّكرار، يُعيد المُكرّر عناصر النّسخة المحفوظة، ويُكرّر ذلك مرارًا وتكرارًا دون نهاية.

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

itertools.cycle(iterable)

المعاملات

iterable

الكائن القابل للتّكرار المرغوب الدّوران على قيمه بشكل لا نهائيّ.

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

مُكرّر يُعيد قيم الكائن المُعطى مرارًا وتكرارًا.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، لاحظ استعمال الدّالة next‎()‎ للوصول إلى القيمة المواليّة في المُكرّر، وهذا لأنّ المُكرّر النّاتج لا متناهٍ، وتحويله إلى قائمة بالدّالة list()‎ سيملأ الذّاكرة العشوائيّة (RAM):

>>> import itertools
>>> c = itertools.cycle('ABC')
>>> next(c)
'A'
>>> next(c)
'B'
>>> next(c)
'C'
>>> next(c)
'A'
>>> next(c)
'B'
>>> next(c)
'C'
>>> next(c)
'A'
>>> next(c)
'B'
>>> next(c)
'C'
>>> next(c)
'A'

ملاحظات

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

def cycle(iterable):
    # cycle('ABCD') --> A B C D A B C D A B C D ...
    saved = []
    for element in iterable:
        yield element
        saved.append(element)
    while saved:
        for element in saved:
              yield element

لاحظ أنّ الدّالة قد تحتاج إلى مساحة تخزين كبيرة (اعتمادًا على حجم الكائن القابل للتّكرار).

انظر أيضًا

مصادر