হাস্কেলের মধ্যে নীচের মতো কিছু অর্জনের সবচেয়ে মূর্তিমান উপায় কী:
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যথেষ্ট ভাল না?