繁体   English   中英

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

[英]Assigning element of list of lists by index sets all first elements of the lists

我每个月都有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左右,那么它将按预期工作。

当您执行v=[[0.0,0.0,0.0]]*12您将获得一个包含12个对同一列表的引用的列表,以改正使用理解:

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

通常,不希望在可变元素上使用这样的*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM