在列表理解中进行分配

may*_*may 2 python list-comprehension python-3.x

我如何移动此代码以列出理解

prev = 0
data = [1, 20, 40, 50, 100]
newlist = []
for x in data: 
    value = x - prev 
    prev = x 
    newlist.append(value) 
Run Code Online (Sandbox Code Playgroud)

Kea*_*nge 7

不用使用prev变量,只需创建一个以0开头的新列表即可。

[x-prev for prev, x in zip([0]+data, data)]
Run Code Online (Sandbox Code Playgroud)

但是,您可能不应该将其大量使用data,因为它会形成一个全新的副本。您可以使用itertools.chain使其更快:

[x - prev for prev, x in zip(chain([0], data), data)]
Run Code Online (Sandbox Code Playgroud)