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

من موسوعة حسوب
مراجعة 06:15، 19 يونيو 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (←‏مصادر)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعيد الدّالة itertools.repeat()‎ مُكرّرًا يُعيد كائنًا مرارًا وتكرارًا بشكل لا نهائي أو لعدد مُحدّد من المرّات.

تُستخدم مع الدالة map()‎ لاستدعاء دالّة عدّة مرّات بنفس المُعاملات. وتُستخدم كذلك مع الدالة zip()‎ لإنشاء جزء لا يتغيّر في كلّ صفّ.

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

itertools.repeat(object[, times])

المعاملات

object

الكائن المُراد تكراره.

times

مُعامل اختياريّ يُحدّد عدد مرّات التّكرار، يكون التّكرار لا نهائيًّا إن لم تُمرّر له أيّة قيمة.

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

مُكرّر يُعيد الكائنَ بشكل لا نهائيّ أو لعدد مُحدّد من المرّات حسب ما مُرِّرَ للمُعامل times.

أمثلة

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

>>> i = itertools.repeat('ABC')
>>> next(i)
'ABC'
>>> next(i)
'ABC'
>>> next(i)
'ABC'

>>> i = itertools.repeat('ABC', 4)
>>> list(i)
['ABC', 'ABC', 'ABC', 'ABC']

وتمرير تيار من القيم الثّابتة إلى الدالة map()‎ أو الدالة zip()‎ من الاستعمالات الشّائعة للدّالة itertools.repeat()‎:

>>> list(map(pow, range(10), repeat(2)))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

ملاحظات

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

def repeat(object, times=None):
    # repeat(10, 3) --> 10 10 10
    if times is None:
        while True:
            yield object
    else:
        for i in range(times):
            yield object

انظر أيضًا

مصادر