為什么Python和c不一樣,不應該只是變了一個值嗎。
uj5u.com熱心網友回復:
恭喜你踏進了 python串列初始化的坑。 來感受一下:
print('坑里的三個元素,地址都一樣,改了j[0], j[1],j[2] 也變了。')
j = [[0]*2]*3
for x in j:
print(id(x))
j[0][0] = 1
print(j)
print('這樣就可以')
k = [[0,0],[0,0],[0,0]]
for x in k:
print(id(x))
k[0][0] = 1
print(k)
print('這樣也對')
l = [[0 for n in range(2)] for m in range(3)]
for x in l:
print(id(x))
l[0][0] = 1
print(l)
uj5u.com熱心網友回復:
>>> j = [[0, 0], [0, 0], [0,0]]
>>> j
[[0, 0], [0, 0], [0, 0]]
>>> j[0][0] = 1
>>> j
[[1, 0], [0, 0], [0, 0]]
>>> for row in j:
... print(id(row))
...
140111482549512
140111482550472
140111481701512
>>> j = [[0]*2]*3
>>> j
[[0, 0], [0, 0], [0, 0]]
>>> for row in j:
... print(id(row))
...
140111481702024
140111481702024
140111481702024
>>>
你使用 j=[[0]*2]*3創建的時候,串列里面的每個元素都是相同的地址,對應的值改變了,就都變了
uj5u.com熱心網友回復:
感謝感謝謝謝謝謝謝謝謝謝謝謝謝謝謝謝
uj5u.com熱心網友回復:
謝謝謝謝謝謝謝謝謝謝謝謝謝謝謝謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/87905.html
上一篇:PyQt5問題:.ui轉.py的時候報錯ModuleNotFoundError: No module named 'PyQt5.sip'
