python 2D list将元素追加到其中的每个列表中

时间:2017-11-24 18:41:48

标签: python list

我正在使用Python进行任务,我不得不使用具有特定大小的2D列表。

我的想法是使用它..

lists = [[]]*10 //output => [[],[],[],[],[],[],[],[],[],[]]

因为我使用了..

nums = [0]*10 //output [0,0,0,0,0,0,0,0,0,0]

到目前为止一切顺利, 问题是,当我这样做..

lists[0].append(5)     //the result is [[5],[5],[5],[5],[5],[5],[5],[5],[5],[5]]

它附加我要添加到列表中每个列表的对象, 如果我这样做了..

nums[0] = 5   //the result is [5,0,0,0,0,0,0,0,0,0]

我已经通过使用

找到了解决问题的方法
lists = [[] for i in range(10)]

但我的问题是:在第一种情况下为什么会这样做?

1 个答案:

答案 0 :(得分:-1)

这是因为当您声明lists = [[]]*10时,您正在实例化所有指向同一列表的子列表列表。因此,当您附加到第一个项目(或任何项目)时,它会更改原始列表,因此指向该项目的所有列表也会更改。