代碼被傳遞給一個數組。我的理解是這個傳球是通過參考完成的。我希望該函數遞歸地將列表中的最後一半剩餘部分分爲兩部分,並將其分割爲零的每個值進行設置。 對數組的改變發生在數組中,但當我在最後調用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