列表中的列表变量赋值问题:赋值时会覆盖值

时间:2017-10-26 15:11:10

标签: python

我正在使用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而不创建一个全新的列表?

任何信息都将非常感谢!

谢谢!

0 个答案:

没有答案