生成一个序列,保留下一个元素python中的前一个元素

use*_*123 3 python

我想在列表中生成一个序列,我知道如何使用for循环执行此操作,但如果我想生成列表使得先前生成的元素包含在下一个元素中,我该怎么做?我很不确定

即生成列表,使其项目为:

其中x只是一个符号

[x,(x)*(x+1),(x)*(x+1)*(x+2)]

而不是 [x,x+1,x+2]

任何帮助非常感谢!

Dan*_*lan 6

我喜欢使用发电机来做这种事情.

def sequence(x, N):
    i = 0
    result = 1
    while i < N:
        result *= (x + i)
        i += 1
        yield result

>>> list(sequence(5, 10))
[5, 30, 210, 1680, 15120, 151200, 1663200, 19958400, 259459200, 3632428800L]
Run Code Online (Sandbox Code Playgroud)

如果你安装了numpy,这会更快:

np.multiply.accumulate(np.arange(x, x + N))
Run Code Online (Sandbox Code Playgroud)