2016-02-19 89 views
0
import numpy as np 

x = np.array([1,2,3]) 
xlist = [] 
Xlist = [] 
for i in range(1): 
    xlist.append(x**(i+1)) 
    Xlist.append(xlist) 
xlist.append(x**2) 
Xlist.append(xlist) 
Xlist 

然而,輸出Python列表奇怪的行爲

[[array([1, 2, 3]), array([1, 4, 9])], [array([1, 2, 3]), array([1, 4, 9])]] 

不過,我不知道爲什麼結果不低於表達,我想下面的結果,怎麼實現?

[[array([1, 2, 3])], [array([1, 2, 3]), array([1, 4, 9])]] 
+0

你在混淆append並在某處擴展嗎? – Nishant

+0

Xlist在最後的作用是什麼? –

+1

@LPK他可能使用Jupyter筆記本。 –

回答

0

您需要首先創建列表的副本,然後append sqaured數組。

new_list = xlist+x**(i+1) 
xlist.append(new_list) 

您的問題正在發生,因爲np.array追加爲基準,所以如果你改變它的名單之外傳遞時,該值將在列表中改變。