如何创建现有数组

时间:2017-06-21 12:12:13

标签: python arrays

我正在尝试用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和编程的新手。

你可以帮我写代码吗?

非常感谢前方

1 个答案:

答案 0 :(得分:3)

列表理解

执行此操作的最佳方法可能是使用 list comprehension

[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])