2017-06-21 64 views
1

我想從Python中的現有數組中創建新陣列。 我讀了一些已有的和類似的問題,但我仍然無法解決問題。如何創建新陣列扣除現有陣列的段

例如:

我有陣A = [4,6,9,15],我想創建B =[(6-4),(9-6),(15-9)]

我試圖做到這一點在for循環是這樣的:

deltaB=[] 
for i in range(0,len(A)): 
    deltaB[i]=A[i]-A[i-1] 
    deltaB.append(deltaB[i]) 

但是,這並不工作...可能是因爲我寫的代碼完全錯誤的,因爲我在Python是新和編程一般。

你能幫我寫這段代碼嗎?

非常感謝前期

回答

3

列表理解

可能做到這一點的最好辦法是使用列表理解

[xj-xi for xi,xj in zip(A,A[1:])] 

產生:

>>> [xj-xi for xi,xj in zip(A,A[1:])] 
[2, 3, 6] 

在這裏,我們第一個zip(..)A(列表)和A[1:]將第一個元素的列表切片合併爲元組。對於每個這樣的元組(xi,xj),我們將xj-xi添加到列表中。

因爲在for循環,從0開始,len(A)之前停止發生

錯誤的錯誤,應該從1開始,len(A)之前停止。此外,您不能首先指定不存在的索引,您需要直接附加它:

deltaB=[] 
for i in range(1,len(A)): 
    deltaB.append(A[i]-A[i-1])