Reduce – ফ্রি পাইথন কোর্স ২০২০ – ক্লাস ২৯

reduce দুটি যুক্তির একটি কার্যকারিতা ইটারেবলের উপাদানগুলিতে সংযোজনযুক্তভাবে প্রয়োগ করে, initial আর্গুমেন্ট দিয়ে শুরু করে। এটিতে নিম্নলিখিত গঠন রয়েছে:

reduce(func, iterable[, initial])

যেখানে func হল ফাংশন যার উপরে ইটারেবলের প্রতিটি উপাদান সংযোজিতভাবে প্রয়োগ হয় এবং initial হল ঐচ্ছিক মান যা গণনার মধ্যে ইটারেবলের উপাদানগুলির আগে উপস্থিত হয় এবং ইটারেবল শূন্য হলে ডিফল্ট হিসাবে কাজ করে। হ্রাস () সম্পর্কে নিম্নলিখিতটি লক্ষ করা উচিত:

  • func দুটি আর্গুমেন্ট প্রয়োজন, যার মধ্যে প্রথমটি হল ইটারেবলে প্রথম উপাদান (যদি initial সরবরাহ করা হয় না) এবং দ্বিতীয়টি ইটারেবলের দ্বিতীয় উপাদান। যদি initial সরবরাহ করা হয়, তবে এটি func এর প্রথম আর্গুমেন্ট হয়ে যায় এবং ইটারেবলের প্রথম উপাদানটি দ্বিতীয় উপাদান হয়ে যায়।
  • reduce ইটারেবলকে একক মানে রুপান্তরিত করে।

যথারীতি, আসুন কয়েকটি উদাহরণ দেখি।

আসুন পাইথনের বিল্ট-ইন sum() ফাংশনের নিজস্ব সংস্করণ তৈরি করি। sum() ফাংশনটি ইটারেবলের সমস্ত আইটেমের যোগফল প্রদান করে।

# Python 3
from functools import reduce

numbers = [3, 4, 6, 9, 34, 12]

def custom_sum(first, second):
    return first + second

result = reduce(custom_sum, numbers)
print(result)

ফলাফল:

68

ফলাফল যা আশা করছেন তাই ৬৮।

তো, কী হলো?

যথারীতি, এগুলি পুনরাবৃত্তীয়গুলির সম্পর্কে: reduce numbers এর প্রথম এবং দ্বিতীয় উপাদানগুলিকে যথাক্রমে custom_sum এ দেয়। custom_sum তাদের যোগফল গণনা করে এবং এটিকে reduce এ রিটার্ন করে। reduce তারপর ফলাফল গ্রহণ করে এবং এটিকে(যোগফল) custom_sum প্রথম উপাদান হিসাবে প্রয়োগ করে এবং পরবর্তী উপাদানটিকে (তৃতীয়) দ্বিতীয় উপাদান হিসাবে custom_sum নিয়ে যাবে। numbers অবসন্ন না হওয়া পর্যন্ত এটি ধারাবাহিকভাবে এটি করে।

আসুন দেখি যখন আমি ঐচ্ছিক initial মানটি ব্যবহার করি তখন কী হয়:

# Python 3
from functools import reduce

numbers = [3, 4, 6, 9, 34, 12]

def custom_sum(first, second):
    return first + second

result = reduce(custom_sum, numbers, 10)
print(result)

ফলাফল:

78

ফলাফলটি, যেমনটি আপনি প্রত্যাশা করেছেন, 78 হল কারণ, reduce custom_sum এর প্রথম আর্গুমেন্ট হিসাবে প্রাথমিকভাবে 10 ব্যবহার করেছে।

Leave a Comment