列表理解的累积和

Kar*_*rus 2 python

我有一个整数列表:

x = [3, 5, 2, 7]
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的列表,其中的nth元素在元素的总和x,从0n-1.

这将导致:

y = [0, 3, 8, 10]
Run Code Online (Sandbox Code Playgroud)

如何在不运行循环的情况下使用列表解析来完成此操作?

Ste*_*ann 7

如果没有循环而没有列表理解呢?可悲的是只有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循环要好得多.

  • @ TigerhawkT3嗯?什么?不,不. (3认同)