Python 在列表理解中做作业

Python 在列表理解中做作业,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,如何将此代码移动到列表中 prev = 0 data = [1, 20, 40, 50, 100] newlist = [] for x in data: value = x - prev prev = x newlist.append(value) 不要使用prev变量,只需创建一个以0开头的新列表 [x-prev for prev, x in zip([0]+data, data)] 不过,您可能不应该将其用于大型数据,因为它会生成一个全新的副本。您可以使

如何将此代码移动到列表中

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

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

[x-prev for prev, x in zip([0]+data, data)]
不过,您可能不应该将其用于大型
数据
,因为它会生成一个全新的副本。您可以使用itertools.chain加快速度:

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

@基廷的回答很好。这是另一个不复制的版本。从技术上讲,不是列表理解:
*(…)
使用生成器内部的项扩展列表文字

[数据[0],*(数据[i+1]-范围内i的数据[i](len(数据)-1))]

这与a非常相似。是的,我目前正在研究这一点,好主意:)