2010-02-22 17 views
31

में किसी आइटम को सम्मिलित करना हाँ, मुझे लगता है कि टुपल्स अपरिवर्तनीय हैं लेकिन स्थिति ऐसी है कि मुझे प्रत्येक ट्यूपल में एक अतिरिक्त मूल्य डालना होगा। तो आइटम में से एक राशि है, मैं एक नया आइटम इतना की तरह एक अलग मुद्रा में उसके बगल में जोड़ने के लिए, की जरूरत है:एक टुपल

('Product', '500.00', '1200.00') 

संभव?

धन्यवाद!

+3

कार्यात्मक प्रोग्रामिंग में आपका स्वागत है। आप एक tuple 'अद्यतन नहीं कर रहे हैं, आप पुराने tuple से एक नया tuple बना रहे हैं। 'Collections.namedtuple' का उपयोग करें और यह स्पष्ट होगा कि आप पुराने प्रकार के ऑब्जेक्ट से एक नया प्रकार का ऑब्जेक्ट बना रहे हैं। –

उत्तर

43

आप इसे एक सूची में डाल सकते हैं, आइटम डालें, फिर उसे एक टुपल पर डालें।

a = ('Product', '500.00', '1200.00') 
a = list(a) 
a.insert(3, 'foobar') 
a = tuple(a) 
print a 

>> ('Product', '500.00', '1200.00', 'foobar') 
+10

या ऐसे कई दृष्टिकोण जो मूल टुपल को संशोधित नहीं करते हैं, बल्कि इसके बजाय इसे प्रतिस्थापित करते हैं। – Steve314

+2

यह वास्तव में एक अच्छा समाधान नहीं है। आप एक ही प्रभाव के लिए '+ = (' foobar ',) 'का उपयोग कर सकते हैं। – gbtimmon

40

चूंकि टुपल्स अपरिवर्तनीय हैं, इसलिए इसका परिणाम एक नया ट्यूपल होगा। बस इसे वापस रखें जहां आपको पुराना मिला है। तो आप नाम rebind कर सकते हैं (या जो भी संदर्भ [एस]) वर्ष टपल से -

sometuple + (someitem,) 
3

एक तरह से सूचीबद्ध करने के लिए

>>> b=list(mytuple) 
>>> b.append("something") 
>>> a=tuple(b) 
18

आप बिल्कुल एक नई टपल बनाने की जरूरत है यह कन्वर्ट करने के लिए है नए के लिए। += ऑपरेटर मदद कर सकते हैं (यदि वहाँ वर्ष टपल करने के लिए केवल एक संदर्भ था), उदा .:

thetup += ('1200.00',) 

appending और एक ही बार में rebinding करता है।

+0

हां, जैसा कि मैंने कड़ी मेहनत सीखी है: पी + = जगह में संदर्भ को संशोधित करने का प्रयास नहीं करता है, यह –

+0

@ मैट को फिर से सौंपता है, लेकिन एक टुपल या स्ट्रिंग के साथ, यह सब कुछ आप कर सकते हैं (यदि आप इसे लागू करते हैं एक सूची, यह _does_ इसे जगह में संशोधित करती है - "पुन: असाइन करें" भाग एक नगण्य उपरि है), –

+0

हमेशा मेरे हैकल्स को प्राप्त करता है। + = मेरे दिमाग में एक जगह में संशोधन होना चाहिए। यदि आप ऐसा नहीं कर सकते हैं, तो ऐसा करने के लिए प्रतीत नहीं होता है। हालांकि मैं पाइथन स्पेक नहीं हूं, और स्पष्ट रूप से जो कुछ भी मेरी राय है, वह करता है जो इसे करने के लिए परिभाषित किया जाता है। और यह किसी भी तरह से निष्पक्ष रूप से गंभीर शिकायत नहीं है - पूर्णांक उत्परिवर्तनीय हैं और आप + = उन्हें काफी आसान कर सकते हैं, जिसका अर्थ है प्रतिस्थापन।भाषा मॉडल के बीच मूल रूप से अंतर्ज्ञान-संघर्ष। – Steve314

7

मामले ऐसे हैं जिनमें टपल के अंत में जोड़ने से नहीं कर रहे हैं के लिए

>>> a=(1,2,3,5,6) 
>>> a=a[:3]+(4,)+a[3:] 
>>> a 
(1, 2, 3, 4, 5, 6) 
>>> 
12
def tuple_insert(tup,pos,ele): 
    tup = tup[:pos]+(ele,)+tup[pos:] 
    return tup 

tuple_insert(tup,pos,9999) 

TUP: टपल
स्थिति: स्थिति
हाथी सम्मिलित करने के लिए: सम्मिलित करने के लिए तत्व

2

आप इसे इस तरह से कोड भी कर सकते हैं:

T += (new_element,) 
3

टी = (1,2,3,4,5)

टी = टी + (6,7)

उत्पादन:

(1,2,3,4,5 , 6,7)

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