الفرق بين المراجعتين لصفحة: «Python/functools/reduce»
إضافة الصّفحة |
لا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الدالة <code>functools.reduce()</code> في بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:الدالة <code>functools.reduce()</code> في بايثون}}</noinclude> | ||
تُطبّق الدّالة <code>functools.reduce()</code> دالّة تأخذ مُعاملين بتراكب لعناصر الكائن القابل للتّكرار المُعطى، من اليسار إلى اليمين لتخفيض العناصر إلى قيمة واحدة (كجمع عدّة مبالغ للحصول على مبلغ إجماليّ واحد مثلًا). | تُطبّق الدّالة <code>functools.reduce()</code> دالّة تأخذ مُعاملين بتراكب لعناصر الكائن القابل للتّكرار المُعطى، من اليسار إلى اليمين لتخفيض العناصر إلى قيمة واحدة (كجمع عدّة مبالغ للحصول على مبلغ إجماليّ واحد مثلًا). | ||
== البنية العامة == | == البنية العامة == | ||
<syntaxhighlight lang="python3"> | <syntaxhighlight lang="python3"> | ||
سطر 21: | سطر 19: | ||
== القيمة المعادة == | == القيمة المعادة == | ||
النّتيجة النّهائيّة لتراكم النّتائج. | |||
== أمثلة == | == أمثلة == | ||
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يجمع تعبير lambda آخر نتيجة (أي المُعامل y) مع كلّ عنصر من العناصر (المُعامل x): | المثال التّالي يوضّح كيفيّة عمل هذه الدّالة، هنا يجمع [[Python/lambda expressions|تعبير lambda]] آخر نتيجة (أي المُعامل y) مع كلّ عنصر من العناصر (المُعامل x): | ||
<syntaxhighlight lang="python3"> | <syntaxhighlight lang="python3"> | ||
>>> functools.reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) | >>> functools.reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) |
المراجعة الحالية بتاريخ 16:31، 23 يونيو 2018
تُطبّق الدّالة 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