मैं इस कार्यक्षमता को प्राप्त करने के लिए map
और sum
का उपयोग करने में सक्षम हूं, लेकिन reduce
का उपयोग कैसे करें?पायथन कैसे टुपल की सूची को कम करने के लिए?
2 सूचियां हैं: a
, b
, उनके पास समान संख्या में मूल्य हैं। मैं
a[0]*b[0]+a[1]*b[1]+...+a[n]*b[n]
गणना करने के लिए काम कर रहे संस्करण map
का उपयोग कर मैंने लिखा चाहते
value = sum(map(lambda (x,y): x*y, zip(a, b)))
तो reduce
उपयोग करने के लिए कैसे की जाती है? मैंने लिखा:
value = reduce(lambda (x,y): x[0]*y[0] + x[1]*y[1], zip(a, b)))
मुझे त्रुटि मिली "TypeError: 'float' object is unsubscriptable
"।
क्या कोई इस पर कुछ प्रकाश डाल सकता है?
आपका लैम्ब्डा दो दो-तत्व tuples लेता है। यह आपकी सूची के पहले दो तत्वों को कम करते समय ठीक काम करता है, लेकिन अब अगली कमी आपके लैम्ब्डा (जो एक फ्लोट है) और सूची का अगला तत्व (जो एक ट्यूपल है) के परिणामस्वरूप काम करेगी, और आपका लैम्ब्डा कर सकता है इसे संभाल नहीं है। आपके लैम्ब्डा को एक संख्या और एक ट्यूपल लेने की आवश्यकता है, और प्रारंभिक मूल्य के साथ संख्या को बीज करें (जैसे एंटोनकोस का जवाब करता है)। – dfan