2017-01-16 44 views
-2

我在理解嵌套單行循環如何工作時遇到了一些麻煩。這裏有一個例子:單行嵌套Python中的循環

我有這樣的代碼:

NewArray = np.array([ get_position(i, size-1, t) for i in range(0, size)]) 

,我想改寫這個來:

for i in range(0,size): 
     NewArray = np.array([ get_position(i, size-1, t)]) 

但我發現了不同的輸出,所以我猜這裏有一個邏輯錯誤。

你能指出這個問題嗎?

謝謝

回答

0

這是因爲第一個創建了一個包含所有值的numpy數組(因爲您使用的是list comprehension而創建了所有值),第二個創建了包含每次迭代最後一個值的新數組(並放棄了數組在上一次迭代中創建,因爲您重用了相同的名稱)。

你可以重寫第二個是:

lst = [] 
for i in range(0,size): 
    lst.append(get_position(i, size-1, t)) 
NewArray = np.array(lst) 

應該給予同樣的結果作爲你的第一個操作。

0

在第一創建長度size的陣列。 在第二次你重複(size次)創建一個長度爲1的數組。