الدالة 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