我設計了一個將列表作爲參數並返回另一個列表的函數。通過迭代列表追加項目
def function(list):
A = []
B = []
for num in list:
A.append(num)
B.append(A)
return B
在這個函數中,我認爲函數會根據A的當前狀態將A附加到A.在這個假設下工作。我調用的函數
>>> test([1,2,3,4,5])
預期輸出爲
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
但是,我得到的是
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
爲什麼是這樣的結果呢?圍繞這個問題有什麼解決方案嗎?
你正在做的是按引用傳遞,而不是A的價值內容的地址的時刻。因此最後它顯示了A的重複內容,而不是顯示存儲時的值。 基本pythonic的方式來做到這一點。正如@Paul Lo建議/回答。 並沒有這不是一個問題,但一個基本的python「屬性」 – smitkpatel 2015-03-03 06:25:22