2010-09-27 9 views
5

मैं दो बराबर लंबाई ट्यूपल्स की जोड़ी राशि कैसे प्राप्त कर सकता हूं? उदाहरण के लिए यदि मेरे पास (0, -1,7) और (3,4, -7) है तो मैं जवाब के रूप में (3,3,0) रखना चाहता हूं।मैं जोड़ों के बराबर दो बराबर लंबाई ट्यूपल्स कैसे कर सकता हूं

+3

एक सवाल का एक डुप्लिकेट एक साल के लिए कहा और एक आधा पहले जो किसी भी अच्छा जवाब प्राप्त नहीं किया था ठीक लग रहा है। उसमें सभी उत्तर नक्शा-आधारित हैं, जो एक सूची समझ/पीढ़ी अभिव्यक्ति (नीचे) से बहुत कम साफ है। उसमें स्वीकार्य उत्तर बहुत खराब है - इस पर एक विधि करने के लिए कक्षा को ओवरराइड करना बिल्कुल समझ में नहीं आता है। –

+0

मुझे लगता है कि उसमें स्वीकृत उत्तर का कारण यह है क्योंकि सवाल यह है कि यह सवाल अजीब व्यवहार है, इसलिए यह वास्तव में उत्तरदाता की गलती नहीं है। –

उत्तर

11
tuple(map(lambda (x, y): x + y, zip((0,-1,7), (3,4,-7)))) 

आप map और lambda से बचने के लिए पसंद करते हैं, तो आप कर सकते हैं:

tuple(x + y for x,y in zip((0,-1,7), (3,4,-7))) 

संपादित: जैसा कि जवाब में से एक ने कहा, आप योग के बजाय का उपयोग कर सकते स्पष्ट रूप से बंटवारे tuples लौटे zip द्वारा। इसलिए यदि आप उपरोक्त कोड नमूना के रूप में नीचे दिखाया गया है फिर से लिखने कर सकते हैं:

tuple(sum(t) for t in zip((0,-1,7), (3,4,-7))) 

संदर्भ: zip, map, sum

+0

सूची समझ आमतौर पर बेहतर है। यह # 497885 में सभी कार्यात्मक उत्तरों की तुलना में कहीं अधिक सहज है। –

+0

@Glenn: सहमत हुए। ऐसा कहा जाता है कि किसी भी तरह से मुझे नक्शा और फ़िल्टर के मामले में पहले सोचना आसान लगता है और फिर इसे मानचित्र (कोई पन इरादा नहीं है: पी) एक सूची समझ के लिए। –

+0

मैं दूसरी तरफ हूं: सूची की समझ (इस मामले में, जेनरेटर एक्सप्रेशन, वास्तव में) मेरे लिए स्वाभाविक रूप से सहज हैं, लेकिन मुझे मानचित्र के बारे में सोचना है - शायद क्योंकि यह पाइथन में अक्सर बहुत कम उपयोग होता है। –

4
>>> t1 = (0,-1,7) 
>>> t2 = (3,4,-7) 
>>> tuple(i + j for i, j in zip(t1, t2)) 
(3, 3, 0) 
3

वैकल्पिक रूप से (अच्छा आप बहुत बड़ा tuples है या आप उनके साथ अन्य गणितीय क्रियाओं करने के लिए योजना बना रहे हैं):

> import numpy as np 
> t1 = (0, -1, 7) 
> t2 = (3, 4, -7) 
> at1 = np.array(t1) 
> at2 = np.array(t2) 
> tuple(at1 + at2) 
(3, 3, 0) 

विपक्ष: अधिक डेटा तैयार करने की जरूरत है। ज्यादातर मामलों में अधिक हो सकता है।

पेशेवर: संचालन बहुत स्पष्ट और अलग हैं। बड़े tuples के साथ शायद बहुत तेज़।

6

उपयोग योग():

>>> tuple(sum(pair) for pair in zip((0,-1,7), (3,4,-7))) 

या

>>> tuple(map(sum, zip((0,-1,7), (3,4,-7)))) 
+0

'tuple (नक्शा (ऑपरेटर.एड, (0, -1, 7), (3, 4, -7)))' –

संबंधित मुद्दे