在Python中声明多个符号变量

时间:2013-11-26 13:00:36

标签: python symbols sympy

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

>>> 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')没问题,但变量数量不固定。

2 个答案:

答案 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