2010-08-06 23 views
8

प्रश्न थोड़ा भ्रामक है, क्योंकि एक tuple अपरिवर्तनीय है। क्या मैं चाहता हूँ है:पायथन: टुपल के अंतिम (तत्व) तत्व को कैसे बदला जाए?

एक टपल a = (1, 2, 3, 4) रखना एक टपल b कि वास्तव में a अंतिम तर्क जो है, कहते हैं, a की दो बार पिछले तत्व के अलावा की तरह है मिलता है।

=> ख == (1, 2, 3, 8)

+3

यदि आप इसकी मदद कर सकते हैं, तो सूची का उपयोग करने पर विचार करें यदि आप तत्वों के स्थान-वस्तु में हेरफेर करने जा रहे हैं। – user37078

+0

मुझे लगता है कि यह मेरे परिदृश्य में tuples का उपयोग करने के लिए और अधिक समझ में आता है - मुझे 'major.minor.branch.build -> (प्रमुख, मामूली, शाखा, निर्माण)' के रूप में प्रोग्राम संस्करणों का प्रतिनिधित्व करने की आवश्यकता है और मुझे इसकी आवश्यकता है किसी दिए गए संस्करण –

+0

से 'पिछले निर्माण' का संस्करण प्राप्त करें आप संस्करण संख्याओं के लिए 'distutils.version.StrictVersion' कक्षा का भी उपयोग कर सकते हैं। – SiggyF

उत्तर

19
b = a[:-1] + (a[-1]*2,) 

क्या मैं यहाँ कर रहा हूँ दो tuples के संयोजन है, पहले से युक्त सब कुछ पिछले तत्व लेकिन, और एक नया टपल अंतिम तत्व के उत्परिवर्तन शामिल है। परिणाम एक नया टुपल है जिसमें आप चाहते हैं।

ध्यान दें कि + के लिए एक टुपल लौटने के लिए, दोनों ऑपरेटरों को एक टुपल होना चाहिए।

+2

'(ए [-1] * 2,)' के बारे में कैसे? उपरोक्त टाइप टाइपर फेंकता है। (पिछला कॉमा एक-आइटम टुपल के लिए जरूरी है) – Skilldrick

+0

@ स्किलड्रिक धन्यवाद, संपादित – Ivo

6

मैं की तरह कुछ करना होगा:

b=list(a) 
b[-1]*=2 
b=tuple(b) 
+1

+1: यह काफी सुगम और लचीला है। – EOL

5

यहाँ यह ऐसा करने का एक ही रास्ता है:

>>> a = (1, 2, 3, 4) 
>>> b = a[:-1] + (a[-1]*2,) 
>>> a 
(1, 2, 3, 4) 
>>> b 
(1, 2, 3, 8) 

तो क्या दूसरी पंक्ति पर क्या होता है? एक [: - 1] का अर्थ है अंतिम तत्व को छोड़कर। एक [-1] अंतिम तत्व है, और हम इसे दो से गुणा करते हैं। (एक [-1] * 2,) परिणाम को एक टुपल में बदल देता है, और कटा हुआ ट्यूपल + ऑपरेटर का उपयोग करके इसके साथ संयोजित होता है। परिणाम बी में डाल दिया गया है।

आप शायद इसे अपने विशिष्ट मामले में फिट कर सकते हैं।

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