当我声明一个符号变量时,它可以工作:

>>> from sympy import var
>>> x = var('x')
>>> x + 2
x + 2


现在,出于我的目的,我需要多个变量,例如s0, s1, ..., s9,我还需要s0 + 1s2 - s1等操作。

代码是什么?这对我不起作用(编辑:我的意思是我可以做到这一点,但是为此,我需要大量更改现有代码):

>>> from sympy import symbols
>>> s = symbols('s0:9'); s
(s0, s1, s2, s3, s4, s5, s6, s7, s8)
>>> s[0] + 1
s0 + 1


EDIT2:s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = symbols('s0:10')很好,但是变量的数量不是固定的。

最佳答案

首先,您应该使用symbols而不是varvar做了一些魔术,将符号注入到名称空间中,并且只能交互使用。

如果需要任意数量的符号,则需要numbered_symbols函数,该函数可生成迭代器。 Here是文档。一个例子

>>> N = numbered_symbols('s')
>>> for s, _ in zip(N, range(10)):
...     print(s)
s0
s1
s2
s3
s4
s5
s6
s7
s8
s9

10-08 14:32