cuo*_*tnk 2 python loops for-loop
我在python中的for循环中有奇怪的行为.问题不是这个问题,而是非常类似于:
a = []
b = [1,2,3,4]
for i in xrange (0,10):
a.append(b)
b[3] += 1
Run Code Online (Sandbox Code Playgroud)
结果是:
a = [[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14]]
Run Code Online (Sandbox Code Playgroud)
我期待的结果是
a = [[1,2,3,4],[1,2,3,5],[1,2,3,6],[1,2,3,7],.....,[1,2,3,14]]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在每次迭代时,b [3]最多加14,然后列表[1,2,3,14]被添加到a.我认为b [3]在每次迭代时应该只增加1
您的问题是每次迭代都会附加对同一个数组的引用,并不断更改它.
最简单的解决方法是将附加更改为
a.append(list(b))
Run Code Online (Sandbox Code Playgroud)
这将使每次迭代都将(浅)副本附加到目标数组,而不是引用.