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非常相似。是的,我目前正在研究这一点,好主意:)