我正在尝试用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和编程的新手。
你可以帮我写代码吗?
非常感谢前方
答案 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])