我正在使用python中的列表列表,我遇到了一个奇怪的问题。例如,如果我首先创建一个由占位符[1,2,3]列表填充的列表:
a = [[1,2,3]]*5
我会得到以下结果:a = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2], 3]
如果我要更改内部列表的特定值,例如:
a[1][2] = 5
我会得到以下结果:a = [[1,2, 5 ],[1,2, 5 ],[1,2, 5 ],[1,2, 5 ],[1,2, 5 ]]。看起来内部列表的每个index = 2值都不会更改为我的新变量。在此示例中,所有变量都链接在5个内部列表中。现在,如果我要使用以下命令手动创建此列表:
b = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
然后重复分配:
b[1][2] = 5
我会得到以下结果:b = [[1,2,3],[1,2, 5 ],[1,2,3],[1,2,3] ],[1,2,3]]
在列表a的情况下,我有链接变量,但在列表b的情况下,我没有。有人可以解释一下这是什么原因吗?有没有办法让列表行为像列表b而不创建一个全新的列表?
任何信息都将非常感谢!
谢谢!