पायथन (2 और 3) में। जब भी हम सूची का उपयोग करते हैं, तो यह एक नई वस्तु देता है, जैसे:
l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
उत्पादन
>>> 140344378384464
>>> 140344378387272
यदि एक ही चीज़ को टपल के साथ दोहराया जाता है, तो वही वस्तु वापस आ जाती है, जैसे:
t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
उत्पादन
>>> 140344379214896
>>> 140344379214896
यह बहुत अच्छा होगा अगर कोई इस बारे में कुछ प्रकाश डाल सकता है कि ऐसा क्यों हो रहा है, मेरे पाइथन अनुभव के दौरान मैं इस धारणा के तहत था कि खाली स्लाइस एक नई वस्तु देता है।
मेरी समझ यह है कि यह उसी वस्तु को लौटा रहा है जैसे टुपल्स अपरिवर्तनीय हैं और इसकी नई प्रति बनाने का कोई मतलब नहीं है। लेकिन फिर, कहीं भी दस्तावेजों में इसका उल्लेख नहीं किया गया है।
l2 = tuple(iter(l1))
अनुकूलन को
PyTuple_GetSlice
गया। डॉक्स अब ठीक कर दिए गए हैं (यह बीपीओ मुद्दा 38557 था )।