【发布时间】:2016-01-09 02:29:17
【问题描述】:
我正面临一个我现在无法自行解决的问题。 它关于以下sn-p:
counter = 0
appendList = []
valueList = [[0], [0]]
for i in range(0,3):
valueList[1] = counter
print "Loop " , i , " valueList: " , valueList
print "Appending (valueList): " , valueList , " to (appendList): " , appendList
appendList.append(valueList)
counter = counter + 1
print "Final appendList: " , appendList
这会产生以下输出:
Loop 0 valueList: [[0], 0]
Appending (valueList): [[0], 0] to (appendList): []
Loop 1 valueList: [[0], 1]
Appending (valueList): [[0], 1] to (appendList): [[[0], 1]]
Loop 2 valueList: [[0], 2]
Appending (valueList): [[0], 2] to (appendList): [[[0], 2], [[0], 2]]
Final appendList: [[[0], 2], [[0], 2], [[0], 2]]
我希望代码片段将不同的 List-Items 添加到 appendList。最终结果应该是这样的:
[[[0], 0], [[0], 1], [[0], 2]]
但是正如你所看到的,sn-p 用最高计数器的相同值填充appendList。
有人可以向我解释这种行为或告诉我,我的错误在哪里吗?
【问题讨论】:
-
每次分配一个副本,像这样
appendList.append(valueList[:]) -
谢谢伙计,这解决了我的问题。你能解释一下为什么吗?
-
现在就写一个答案。
标签: python list loops for-loop append