【发布时间】:2015-05-19 23:16:40
【问题描述】:
在编写 Python 项目时,我注意到在尝试更改另一个列表中的列表值时出现了一种奇怪的行为。
无效的代码:
lst = []
to_add = [None,None,None]
for i in range(3):
lst.append(to_add)
for i in range(3):
lst[i][0] = anotherslistoflists[i][0]
令我惊讶的是,这个例子给出了意想不到的结果。具体来说,每个 lst[i][0] 都被分配了相同的值,该值是“anotherlistoflists”列表的最后一个索引中的第一个元素。
结果示例(打印 lst 时)
("word1",None,None)
("word1",None,None)
("word1",None,None)
工作代码:
lst = []
for i in range(5):
lst.append([None,None,None])
# same code as above
结果示例2(预期结果)
("word1",None,None)
("word2",None,None)
("word3",None,None)
当然,您可以看到问题已解决,但我想知道为什么第一个代码不起作用。 “to_add”列表可能有问题,但我不明白这里有什么问题。
【问题讨论】: