2016-11-28 80 views
0

我寫下面的代碼來創建像[[1,2,3],[2,2,3],[3,2,3]]陣列插入在陣列中的陣列,使用循環

def f(X): 
    X[0]=X[0]+1 
    return X 
L=[] 
X=[1,2,3] 
for i in range(0,3): 
    L=L+[X] 
    X=f(X) 
print(L) 

但它正在打印[[4, 2, 3], [4, 2, 3], [4, 2, 3]]。爲什麼會發生,以及如何使用函數'f'解決這個問題?

感謝

+1

問題尋求幫助調試(「爲什麼不這個代碼工作嗎?「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+0

發生了什麼非常明顯,解決方法是在f()中使用X的副本。 – polku

+1

順便說一下,你也可以在[1,2,3]]'中爲'L = [[x,2,3]]。 –

回答

0

如果你必須使用你的函數f,然後嘗試如下:

l = [] 
x = [1, 2, 3] 

def f(x): 
    x[0] = x[0] + 1 
    return x 

for i in range(3): 
    l.append(x[:]) 
    x = f(x) 

輸出:

>>> l 
[[1, 2, 3], [2, 2, 3], [3, 2, 3]]