程式碼如下:
a=[]
b=[3,2,1]
for i in range(1,4):
a.append(b)
b[1] = b[1] + i
print(a)
我預想a的結果應該是[[3,2,1],[3,3,1],[3,5,1]]
實際上a的結果是[[3,8,1],[3,8,1],[3,8,1]]
也就是list每次append的是將b這個list變數丟入a中
查了資料,原來python是pass by reference的
所以b的最終運算結果都會反映在a之中
請問要如何修改才能得到我所預想的結果呢?感謝
試試看
a=[]
b=[3,2,1]
for i in range(1,4):
c = b.copy()
a.append(c)
b[1] = b[1] + i
print(a)
# [[3, 2, 1], [3, 3, 1], [3, 5, 1]]