হাস্কেলের মধ্যে নীচের মতো কিছু অর্জনের সবচেয়ে মূর্তিমান উপায় কী:
foldl (+) 0 [1,2,3,4,5]
--> 15
বা রুবি এর সমতুল্য:
[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15
স্পষ্টতই, পাইথন reduce
ফাংশনটি সরবরাহ করে , যা ভাঁজগুলির বাস্তবায়ন, ঠিক উপরের মতোই, তবে আমাকে বলা হয়েছিল যে প্রোগ্রামিংয়ের 'পাইথোনিক' পদ্ধতিটি lambda
শর্তাবলী এবং উচ্চতর অর্ডার ফাংশনগুলি এড়ানো , যেখানে সম্ভব সেখানে তালিকা-বোধগম্যতা পছন্দ করে। অতএব, পাইথনের কোনও তালিকা ভাঁজ করার কোনও পছন্দনীয় উপায় বা তালিকার মতো কাঠামো যা reduce
কার্যকরী নয়, বা এটি reduce
অর্জনের বুদ্ধিদীপ্ত উপায়?
sum
, আপনি কয়েকটি বিভিন্ন ধরণের উদাহরণ সরবরাহ করতে চাইতে পারেন।
sum()
আসলে এটির সাথে সীমিত কার্যকারিতা সরবরাহ করে। উদাহরণস্বরূপ sum([[a], [b, c, d], [e, f]], [])
প্রত্যাবর্তন [a, b, c, d, e, f]
+
তালিকাতে সময় এবং স্মৃতি উভয় ক্ষেত্রেই রৈখিক সময়ের ক্রিয়াকলাপ, পুরো কলটিকে দ্বিখন্ডিত করে তোলে। ব্যবহার list(itertools.chain.from_iterable([a], [b,c,d],[e,f],[]])
সামগ্রিক রৈখিক - এবং যদি আপনাকে শুধুমাত্র একবারই এটি পুনরুক্তি উপর, আপনি কল ড্রপ করতে পারেন list
এটি মেমরি পদ ধ্রুবক করা।
sum
যথেষ্ট ভাল না?