الدالة 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
لاحظ أنّ الدّالة قد تحتاج إلى مساحة تخزين كبيرة (اعتمادًا على حجم الكائن القابل للتّكرار).
انظر أيضًا
- المكرِّرات Iterators في بايثون.
- المولدات Generators في بايثون.
- الدالة
zip()
في بايثون: تُركّب عناصر الكائنات القابلة للتّكرار المُعطاة. - الدالة
list()
في بايثون: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة.