我有一个清单:
a = [0, 4, 10, 100]
我想计算列表中连续元素之间的差异。我这样做:
[x - a[i-1] for i, x in enumerate(a)]
但这给我带来了这个结果:
[-100, 4, 6, 90]
如您所见,第一个元素是-100,但是当我进行此类转换以获得this时,我想保持第一个元素不变[0, 4, 6, 90]
。怎么做?
使用的变体zip
是仅添加前导0,因为item - 0
它将是0。
x = [0, 4, 10, 100]
assert [b - a for a, b in zip([0] + x, x)] == [0, 4, 6, 90]
如果您要处理大量列表,循环运行并关心性能,那么您可能不希望将所有内容附加a
到新列表上而产生开销,可以使用其他解决方案或itertools.chain([0], a)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句