通过索引分配列表列表的元素可设置列表的所有首个元素

时间:2018-06-29 09:58:37

标签: python list indexing sublist

我每个月都有3个值的列表,这些值的初始化如下:

v=[[0.0,0.0,0.0]]*12

在2个嵌套循环中,我想向一个元素添加一个值:

v[month-1][pos] += row[0]

在执行代码month-1 = 8pos = 0的某一时刻。从查询到数据库的row[0]1.0

奇怪的是,我得到了 [[1.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0,....
因此,每个子列表的第一个元素都设置为1.0。怎么会这样更奇怪的是,如果我调试代码并手动设置值v[8][0]=9,那么它可以按预期工作。

1 个答案:

答案 0 :(得分:1)

执行此操作v=[[0.0,0.0,0.0]]*12时,您将获得一个包含12个对同一列表的引用的列表,以使用理解来解决该问题:

v = [[0.0,0.0,0.0] for _ in range(12)]

通常不希望这样使用*来使用可变元素。