इसे और अधिक स्पष्ट रूप से समझाने की कोशिश कर रहा है,
ऑपरेशन 1:
x = [[0, 0], [0, 0]]
print(type(x)) # <class 'list'>
print(x) # [[0, 0], [0, 0]]
x[0][0] = 1
print(x) # [[1, 0], [0, 0]]
ऑपरेशन 2:
y = [[0] * 2] * 2
print(type(y)) # <class 'list'>
print(y) # [[0, 0], [0, 0]]
y[0][0] = 1
print(y) # [[1, 0], [1, 0]]
ध्यान दिया जाता है कि पहली सूची के पहले तत्व को संशोधित करना प्रत्येक सूची के दूसरे तत्व को संशोधित क्यों नहीं करता है? ऐसा इसलिए है क्योंकि [0] * 2
वास्तव में दो नंबरों की एक सूची है, और 0 के संदर्भ को संशोधित नहीं किया जा सकता है।
यदि आप क्लोन प्रतियां बनाना चाहते हैं, तो ऑपरेशन 3 का प्रयास करें:
import copy
y = [0] * 2
print(y) # [0, 0]
y = [y, copy.deepcopy(y)]
print(y) # [[0, 0], [0, 0]]
y[0][0] = 1
print(y) # [[1, 0], [0, 0]]
क्लोन कॉपी बनाने का एक और दिलचस्प तरीका, ऑपरेशन 4:
import copy
y = [0] * 2
print(y) # [0, 0]
y = [copy.deepcopy(y) for num in range(1,5)]
print(y) # [[0, 0], [0, 0], [0, 0], [0, 0]]
y[0][0] = 5
print(y) # [[5, 0], [0, 0], [0, 0], [0, 0]]
[x]*3
3 संदर्भों को स्टोर करें जैसे[x, x, x]
कि केवल तभी सही होताx
है जब परस्पर परिवर्तन किया जाता है। यह उदाहरण के लिएa=[4]*3
, जहाँa[0]=5
, के बाद के लिए काम नहीं करता है ,a=[5,4,4].