2017-06-21 85 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])