程式码如下:
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之中
请问要如何修改才能得到我所预想的结果呢?感谢
1 个回答
5
hokou
iT邦好手 1 级 ‧ 2025-02-21 15:23:19
最佳解答
试试看
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]]
-
1 -
-
lsesroom
iT邦新手 2 级 ‧
2025-02-21 15:32:06
Python原来有浅複製跟深複製的作法,感谢
修改