我想在列表中生成一个序列,我知道如何使用for循环执行此操作,但如果我想生成列表使得先前生成的元素包含在下一个元素中,我该怎么做?我很不确定
即生成列表,使其项目为:
其中x只是一个符号
[x,(x)*(x+1),(x)*(x+1)*(x+2)]
而不是 [x,x+1,x+2]
任何帮助非常感谢!
我喜欢使用发电机来做这种事情.
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)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |