الدالة functools.reduce()‎ في بايثون

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

تُطبّق الدّالة functools.reduce()‎ دالّة تأخذ مُعاملين بتراكب لعناصر الكائن القابل للتّكرار المُعطى، من اليسار إلى اليمين لتخفيض العناصر إلى قيمة واحدة (كجمع عدّة مبالغ للحصول على مبلغ إجماليّ واحد مثلًا).

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

functools.reduce(function, iterable[, initializer])

المعاملات

function

الدّالة المُراد تطبيقها على عناصر الكائن القابل للتّكرار.

iterable

الكائن القابل للتّكرار.

initializer

قيمة بدئيّة تُضاف إلى بداية العناصر قبل بدء الحساب، وتكون كذلك قيمة افتراضيّة عندما يكون الكائن القابل للتّكرار فارغًا.

إن لم تُمرّر قيمة للمُعامل initializer واحتوى الكائن القابل للتّكرار على عنصر واحد فقط، فسيُعاد ذات العنصر.

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

النّتيجة النّهائيّة لتراكم النّتائج.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يجمع تعبير lambda آخر نتيجة (أي المُعامل y) مع كلّ عنصر من العناصر (المُعامل x):

>>> functools.reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
15

الاستدعاء أعلاه يقوم بالعمليّة الحسابيّة التّاليّة:

((((1+2)+3)+4)+5)

ملاحظات

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

def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value

انظر أيضًا

مصادر