代码被传递给一个数组。我的理解是这个传球是通过参考完成的。我希望该函数递归地将列表中的最后一半剩余部分分为两部分,并将其分割为零的每个值进行设置。 对数组的改变发生在数组中,但当我在最后调用print a时,我得到原始数组。如何通过引用传递函数来更改列表?
我在做什么错了?
a = range(10)
def listreduction(array):
if len(array) == 1:
array[0] = 0
return
split = len(array)/2
array[split] = 0
return listreduction(array[split:])
listreduction(a)
print a
的电流输出为
[0, 1, 2, 3, 4, 0, 6, 7, 8, 9]
的应该是更多的零到第二个
您期望得到的输出是什么? – BPL
范围!=数组顺便说一句。由于范围是不可变的,它必须被复制为函数内某个数组的数组,因此是问题。总是明确地返回;不要依赖副作用。我实际上不记得Python是否通过引用。我似乎记得它比这更复杂。 – Carcigenicate
当您使用递归时,您不会将实际列表传递给该方法。那就是问题所在。 – scriptmonster