के भीतर एक सूची अपडेट करना मैं केवल दुभाषिया में चारों ओर घूम रहा था और कुछ ऐसा नहीं चला जो मुझे समझ में नहीं आया। जब मैं एक सूची के साथ एक सूची के रूप में एक tuple बनाते हैं और फिर उस सूची को अद्यतन करने का प्रयास करें, तो कुछ अजीब होता है। उदाहरण के लिए, जब मैं रन:एक tuple
tup = (1,2,3,[4,5])
tup[3] += [6]
मैं:
TypeError: 'tuple' object does not support item assignment
कौन सा है मैं वास्तव में क्या उम्मीद।
>>> tup
(1, 2, 3, [4, 5, 6])
तो सूची वास्तव में अद्यतन किया गया था, भले ही अजगर एक अपवाद दिए: हालांकि फिर जब मैं फिर से टपल संदर्भ, मैं मिलता है। वह कैसे काम करता है? मैं एक ऐसे परिदृश्य की कल्पना नहीं कर सकता जहां मैं वास्तव में ऐसा कुछ करना चाहता हूं, लेकिन मैं अभी भी समझना चाहता हूं कि क्या हो रहा है। धन्यवाद।
मुझे लगता है कि इसका उत्तर उस अतिरिक्त से लाभान्वित होगा क्योंकि यह विस्तार सिर्फ 'tup [3] नहीं है .__ iadd __ ([6]) '; यह 'tup [3] = tup [3] है .__ iadd __ ([6])'। यह केवल सुविधाजनक है कि 'list .__ iadd__' वही ऑब्जेक्ट देता है जो यह उत्परिवर्तित हो रहा है। – zondo
दस्तावेज़ों के लिंक के लिए धन्यवाद! यह एक बड़ी मदद है। –
धन्यवाद, मैंने इसे दस्तावेज़ों में नहीं पकड़ा। इसलिए यह सुनिश्चित करने के लिए कि मैं इस अधिकार को समझता हूं, मूल रूप से मेरे उदाहरण में सूची अपडेट की गई है क्योंकि मैं बस tup [3] .__ iadd __ ([6]) कर रहा हूं और फिर पायथन टुपल पर आइटम असाइनमेंट (और विफल रहता है) प्रयास करता है? तो मुझे अपवाद मिलता है कि यह असफल रहा, लेकिन उस बिंदु तक हमने सूची को पहले से ही अपडेट कर दिया है? –