【发布时间】:2014-12-07 12:46:29
【问题描述】:
这并不是一个关于错误的问题。相反,澄清事情的运作方式。
我将一个元素(例如 0)放入一个数组中,该数组也位于一个数组中。反复执行,代码如下:
arr = [[0 for x in range(2)] for x in range(2)]
递归,
def zero(array,n,i):
if i >= n:
return array
else:
array[i].append(0)
return zero(array,n,i+1)
arr = [[]] * 2
print zero(arr,2,0)
他们都会有这样的输出: [[0,0],[0,0]]
我没有得到递归所经历的过程(我只是通过反复试验不小心制作了该代码。)。
我没有得到的是因为我在更大的数组内的第一个数组(索引为零)中附加零,不应该只在第一个数组中而不是在第二个数组中附加“0”吗?但事实并非如此,两个数组都附加了“0”。当它返回函数时,不是将 '0' 附加到第二个数组,而是再次附加到两个数组。
我试图追踪它,但我真的不明白它是如何发生的。感谢您的回复。
【问题讨论】:
-
在创建列表时使用
arr = [[] for _ in range(2)] -
众多重复之一
标签: python arrays recursion iteration