列表理解作业

2024-04-26 17:41:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将此代码移到列表中

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

Tags: 代码in列表fordatavalueappendprev
2条回答

@Keatinge的回答很好。这是另一个没有拷贝的版本。从技术上讲不是列表理解:*(...)用生成器中的项扩展列表文本。你知道吗

[data[0], *(data[i + 1] - data[i] for i in range(len(data) - 1))]

与其使用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)]

相关问题 更多 >