تقنية

reduce في بايثون: هل تستدعي الدالة لقائمة من عنصر واحد؟

دون بداية: الناتج 5 وسجل الاستدعاءات [].
صفر استدعاءات.

reduce دون بداية اختيارية تعيد العنصر الوحيد مباشرة؛ الدالة الثنائية لا تُستدعى في هذه الحالة. [1]

الخلاصة السريعة

لا دون بداية اختيارية هنا. [1]

  • reduce دون بداية اختيارية تعيد العنصر الوحيد مباشرة؛ الدالة الثنائية لا تُستدعى في هذه الحالة. [1]
  • على CPython 3.12.14، combine تجمع عددين وتسجل كل استدعاء في calls؛ المدخل [5]. [1]
  • reduce(combine,[5]) تعيد 5؛ calls تساوي []، فلا يوجد استدعاء للجمع. [1]
  • مع البداية 2: الناتج 7، والسجل [(2,5)]؛ استدعاء واحد يجمع البداية مع العنصر. [1]
  • تحكم بمدخل فارغ وبداية 2: الناتج 2 والسجل []؛ نمسح السجل بين التجارب، ولا نخلط قيمة البداية بعنصر من المدخل. [1]

العنصر الوحيد

reduce دون بداية اختيارية تعيد العنصر الوحيد مباشرة؛ الدالة الثنائية لا تُستدعى في هذه الحالة. [1]

سجل الجمع

على CPython 3.12.14، combine تجمع عددين وتسجل كل استدعاء في calls؛ المدخل [5]. [1]

دون بداية

reduce(combine,[5]) تعيد 5؛ calls تساوي []، فلا يوجد استدعاء للجمع. [1]

from functools import reduce calls=[] def combine(x,y): calls.append((x,y)) return x+y print(reduce(combine,[5]),calls) [1]

مع البداية 2: الناتج 7 وسجل الاستدعاءات [(2,5)].
استدعاء واحد.

البداية والتحكم

مع البداية 2: الناتج 7، والسجل [(2,5)]؛ استدعاء واحد يجمع البداية مع العنصر. [1]

calls.clear() print(reduce(combine,[5],2),calls) calls.clear() print(reduce(combine,[],2),calls) [1]

تحكم بمدخل فارغ وبداية 2: الناتج 2 والسجل []؛ نمسح السجل بين التجارب، ولا نخلط قيمة البداية بعنصر من المدخل. [1]

المراجع

  1. Python reduce

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.