首页 > 解决方案 > 一个序列的 Sympy 求和

问题描述

我在 Python 中有一个简单的值序列sympy。我想对序列的值求和。我有一个解决方案,但它很笨拙。有没有更自然的方法?

#!/usr/bin/env python

from sympy import summation, sequence, pprint
from sympy.abc import x

s = sequence(x, (x, 1, 10))
print(s)
pprint(s)

print(summation(s.formula, (x, s.interval.left, s.interval.right)))

标签: pythonsequencesympy

解决方案


根据docs, a SeqFormulas 中的项目可以用以下方式枚举list

In [53]: list(s)
Out[53]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

所以总和可以用

In [54]: sum(list(s))
Out[54]: 55

当然,这只适用于有限序列。


另一种写总和的方法是:

In [115]: summation(s.formula, (x, s.start, s.stop))
Out[115]: 55

推荐阅读