首页 > 解决方案 > 在列表理解中进行分配

问题描述

如何将此代码移动到列表理解

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

标签: pythonpython-3.xlist-comprehension

解决方案


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

[x-prev for prev, x in zip([0]+data, data)]

不过,您可能不应该将其用于大容量data,因为它会生成一个全新的副本。您可以使用 itertools.chain 来加快速度:

[x - prev for prev, x in zip(chain([0], data), data)]

推荐阅读