تقليل القوائم إلى قيمة واحدة باستخدام دالة reduce() في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 19 ديسمبر 2024محتوى المقال
- ما هي دالة reduce() في Python؟
- كيفية استخدام reduce() لتقليل القوائم
- استخدام lambda مع reduce()
- تقليل القوائم باستخدام عمليات أخرى
- استخدام reduce() مع القيم الافتراضية (Initial Values)
- التطبيقات العملية لدالة reduce()
- مقارنة بين reduce() و for loop
- الخلاصة
في لغة البرمجة Python، تعتبر دالة reduce()
جزءًا من مكتبة functools
وهي تُستخدم لتقليل قائمة من القيم إلى قيمة واحدة عن طريق تطبيق دالة معينة بشكل متكرر على العناصر. يمكن أن تكون هذه العملية مفيدة في العديد من السيناريوهات مثل حساب المجموع أو ضرب الأرقام أو تطبيق عمليات حسابية أكثر تعقيدًا.
ما هي دالة reduce()
في Python؟
دالة reduce()
تُطبق دالة محددة من قِبلك على القائمة، بحيث تأخذ الدالة عنصرين في كل مرة وتُعيد نتيجة، ثم تُطبق هذه النتيجة مع العنصر التالي وهكذا حتى يتم تقليل القائمة بأكملها إلى قيمة واحدة.
لكي تتمكن من استخدام reduce()
، يجب استيرادها أولاً من مكتبة functools
:
from functools import reduce
كيفية استخدام reduce()
لتقليل القوائم
دالة reduce()
تأخذ معاملين رئيسيين:
- الدالة التي تُطبق على القائمة (يجب أن تقبل معاملين).
- القائمة أو الهيكل القابل للتكرار الذي ترغب في تقليله.
مثال 1: استخدام reduce()
لحساب مجموع الأرقام
from functools import reduce
def add(x, y):
return x + y
numbers = [1, 2, 3, 4, 5]
result = reduce(add, numbers)
print('مجموع الأرقام هو:', result) # الناتج سيكون: مجموع الأرقام هو: 15
في هذا المثال، دالة add
تقوم بإضافة رقمين. يتم تمرير دالة add
مع القائمة numbers
إلى reduce()
لحساب مجموع جميع الأرقام.
استخدام lambda
مع reduce()
يمكنك استخدام تعبيرات lambda
بدلًا من تعريف دالة منفصلة. تعبيرات lambda
تسمح لك بكتابة الدالة بشكل مختصر داخل reduce()
نفسها.
مثال 2: استخدام lambda
لحساب مجموع الأرقام
from functools import reduce
numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, numbers)
print('مجموع الأرقام هو:', result) # الناتج سيكون: مجموع الأرقام هو: 15
في هذا المثال، بدلاً من استخدام دالة add
، استخدمنا تعبير lambda
المختصر لحساب مجموع الأرقام.
تقليل القوائم باستخدام عمليات أخرى
يمكن أيضًا استخدام reduce()
لتنفيذ عمليات حسابية أخرى مثل ضرب الأرقام أو إيجاد القيم القصوى أو الدنيا.
مثال 3: استخدام reduce()
لحساب حاصل ضرب الأرقام
from functools import reduce
def multiply(x, y):
return x * y
numbers = [1, 2, 3, 4, 5]
result = reduce(multiply, numbers)
print('حاصل ضرب الأرقام هو:', result) # الناتج سيكون: حاصل ضرب الأرقام هو: 120
في هذا المثال، تم استخدام reduce()
لحساب حاصل ضرب جميع الأرقام في القائمة.
مثال 4: إيجاد أكبر قيمة في القائمة باستخدام reduce()
from functools import reduce
def find_max(x, y):
return max(x, y)
numbers = [1, 8, 3, 7, 5]
result = reduce(find_max, numbers)
print('أكبر رقم هو:', result) # الناتج سيكون: أكبر رقم هو: 8
في هذا المثال، تم استخدام reduce()
لإيجاد أكبر قيمة في القائمة باستخدام دالة max
.
استخدام reduce()
مع القيم الافتراضية (Initial Values)
دالة reduce()
تسمح لك بتمرير قيمة ابتدائية تُستخدم كبداية لعملية التجميع. هذا يكون مفيدًا إذا كنت ترغب في بدء العملية بقيمة معينة بخلاف أول عنصر في القائمة.
مثال 5: استخدام قيمة ابتدائية مع reduce()
from functools import reduce
numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, numbers, 10)
print('المجموع مع القيمة الابتدائية هو:', result) # الناتج سيكون: المجموع مع القيمة الابتدائية هو: 25
في هذا المثال، تم تمرير 10 كقيمة ابتدائية، لذا تم بدء عملية الجمع من 10.
التطبيقات العملية لدالة reduce()
تُستخدم reduce()
في العديد من التطبيقات اليومية، بما في ذلك:
- جمع أو ضرب القيم العددية: مثل المجموع الكلي لعدد من القيم أو حاصل ضربها.
- إيجاد القيم القصوى أو الدنيا: عن طريق تطبيق دوال مثل
max
أوmin
. - دمج النصوص: يمكنك استخدام
reduce()
لدمج قائمة من السلاسل النصية في سلسلة واحدة.
مثال 6: دمج قائمة من السلاسل النصية
from functools import reduce
words = ['Python', 'is', 'awesome']
sentence = reduce(lambda x, y: x + ' ' + y, words)
print(sentence) # الناتج سيكون: Python is awesome
في هذا المثال، تم استخدام reduce()
لدمج قائمة من الكلمات في جملة واحدة.
مقارنة بين reduce()
و for
loop
على الرغم من أن reduce()
توفر طريقة مختصرة لتقليل القيم، إلا أنه يمكنك تحقيق نفس النتائج باستخدام حلقة for
. لكن reduce()
تساعد في جعل الكود أكثر اختصارًا ووضوحًا، خاصة في العمليات المعقدة.
مثال 7: مقارنة بين reduce()
و حلقة for
# باستخدام reduce()
from functools import reduce
numbers = [1, 2, 3, 4, 5]
result_reduce = reduce(lambda x, y: x + y, numbers)
# باستخدام for loop
result_for = 0
for num in numbers:
result_for += num
print(result_reduce) # الناتج: 15
print(result_for) # الناتج: 15
في هذا المثال، يتم مقارنة استخدام reduce()
مع حلقة for
لتحقيق نفس النتيجة.
الخلاصة
تعتبر دالة reduce()
في Python أداة قوية ومرنة لتقليل القوائم أو هياكل البيانات الأخرى إلى قيمة واحدة. باستخدامها مع العمليات الحسابية البسيطة أو حتى المعقدة، يمكنك تقليل عدد كبير من البيانات إلى قيمة واحدة بشكل فعال. وعلى الرغم من أن نفس النتائج يمكن تحقيقها باستخدام حلقات for
، إلا أن reduce()
توفر طريقة مختصرة وأكثر وضوحًا للتعامل مع البيانات.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية استخدام دالة any() للتحقق من الشروط في القوائم في Python
- فهم دالة للتحقق من جميع الشروط في القوائم في Python
- تقسيم الأعداد الصحيحة والحصول على النتيجة والباقي باستخدام دالة في Python
- تحويل الكائنات إلى تمثيل نصي باستخدام دالة repr() في Python
- استخدام دالة reversed() لعكس ترتيب العناصر في Python
- فهم دالة format() لتنسيق النصوص والأرقام في Python
- استخدام دالة chr() لتحويل الأرقام إلى حروف في Python
- تحويل الحروف إلى أرقام باستخدام دالة ord() في Python
- التعامل مع استثناءات البرمجة باستخدام دالة raise في Python
- كيفية استخدام دالة eval() لتنفيذ النصوص البرمجية في Python