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