हास्केल में निम्नलिखित की तरह कुछ प्राप्त करने का सबसे मुहावरेदार तरीका क्या है:
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काफी अच्छा नहीं है?