从先前元素的列表中减去Python元素

Kat*_*ate 0 python loops list

我有一个循环,它产生多个这样的列表:

  [1,6,2,8,3,4]

  [8,1,2,3,7,2]

  [9,2,5,6,1,4]
Run Code Online (Sandbox Code Playgroud)

对于每个列表,我想减去前两个元素,然后使用该值减去后的第三个元素。

例如,第一个列表应最终看起来像:

  [-5, 4,-6, 5,-1]
Run Code Online (Sandbox Code Playgroud)

我尝试手动执行此操作,但是要执行此操作的列表太多,这将花费太多时间。

我将如何在最少的代码行中做到这一点?

tob*_*s_k 5

从更新的例子,它似乎是,给定一个列表[a, b, c, d, ...]你想要[a-b, b-c, c-d, d-e, ...]的结果。为此,您应该zip将列表及其自身偏移一个位置,然后减去对中的元素。

lst = [1,6,2,8,3,4]
res = [x-y for x, y in zip(lst, lst[1:])]    
print(res)  # [-5, 4, -6, 5, -1]
Run Code Online (Sandbox Code Playgroud)

如果列表更长,则可以创建一个迭代器,用于tee复制该迭代器,并使用以下命令将其中一个迭代器向前移动一个位置next

import itertools    
i1, i2 = itertools.tee(iter(lst))
next(i2)
res = [x-y for x, y in itertools.izip(i1, i2)]  # or just zip in Python 3
Run Code Online (Sandbox Code Playgroud)