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)
不用使用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)