Простое суммирование последовательности

#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)) .