我正在使用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)]
但我的问题是:在第一种情况下为什么会这样做?
答案 0 :(得分:-1)
这是因为当您声明lists = [[]]*10
时,您正在实例化所有指向同一列表的子列表列表。因此,当您附加到第一个项目(或任何项目)时,它会更改原始列表,因此指向该项目的所有列表也会更改。