#python #sequence #sympy
#python #последовательность #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)))
Ответ №1:
Согласно документам, элементы в SeqFormula
s могут быть перечислены с помощью 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
Комментарии:
1. Есть ли способ / синтаксис использовать последовательность при суммировании, product по-другому? Я ожидал бы, что
summation(seq)
сработает сразу.2.
summation
требуется, чтобы вы указали пределы суммирования. В этом случае вы могли бы использоватьsummation(s.formula, (x, s.start, s.stop))
.