当我声明一个符号变量时,它可以工作:
>>> from sympy import var
>>> x = var('x')
>>> x + 2
x + 2
现在,出于我的目的,我需要多个变量,比如s0, s1, ..., s9
,我还需要s0 + 1
,s2 - 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')
没问题,但变量数量不固定。
答案 0 :(得分:2)
首先,您应该使用symbols
代替var
。 <{1}}为将符号注入命名空间做了一些魔术,并且只能以交互方式使用。
如果你想要任意数量的符号,你需要var
函数,它产生一个迭代器。 Here是文档。一个例子
numbered_symbols
答案 1 :(得分:1)
这很好用,不确定你对此有什么问题:
>>> from sympy import symbols
>>> s = symbols('s0:10')
>>> s
(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9)
>>> s[0] + 1
s0 + 1
如果要将每个设置为变量,可以使用多重赋值:
s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = symbols('s0:10')
这相当于:
s0, s1 = Symbol('s0'), Symbol('s1') # and s2:s9 as well