c =[]
a = [1,2,3]
c.append(a) #第一次添加 a
a.append(4)
c.append(a) #第二次添加 a
a.append(5)
c.append(a) #第三次添加 a
print(c)
想要输出:
[[1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
实际输出:
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
解决方法: 生成一个新的替换变量 b ,如下
c =[]
a = [1,2,3]
b= [k for k in a] # 生成中间变量
c.append(b) #第一次添加 a
a.append(4)
b= [k for k in a] # 生成中间变量
c.append(b) #第二次添加 a
a.append(5)
b= [k for k in a] # 生成中间变量
c.append(b) #第三次添加 a
print(c)
原因:解释的原因,我认为是当执行 c.append(a) 时,没有真的 append,只是指向了a 的地址,当a改变时,自然c 也会变化。