我有一个整数列表:
x = [3, 5, 2, 7]
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的列表,其中的nth元素在元素的总和x,从0到n-1.
这将导致:
y = [0, 3, 8, 10]
Run Code Online (Sandbox Code Playgroud)
如何在不运行循环的情况下使用列表解析来完成此操作?
如果没有循环而没有列表理解呢?可悲的是只有Python 3:
>>> x = [3, 5, 2, 7]
>>> from itertools import accumulate
>>> [0] + list(accumulate(x[:-1]))
[0, 3, 8, 10]
Run Code Online (Sandbox Code Playgroud)
更新:这是一个O(n)列表理解解决方案:
>>> s = [0]
>>> [s.append(s[0]+n) or s.pop(0) for n in x]
[0, 3, 8, 10]
Run Code Online (Sandbox Code Playgroud)
但我只是想表明没有太多努力就可以做到这一点.我认为accumulate或for循环要好得多.