【问题标题】:Declarating multiple symbolic variables in Python在 Python 中声明多个符号变量
【发布时间】:2013-12-11 15:20:54
【问题描述】:

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

>>> 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('s0:%d' % n) 怎么样?
  • 或者只是[ var('x%n' % i) for i in range(n) ]

标签: python symbols sympy


【解决方案1】:

首先,您应该使用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

【讨论】:

    【解决方案2】:

    这很好用,不知道你遇到了什么问题:

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

    【讨论】:

    • 这是一个 OP 想要的问题,而不是答案,你不觉得吗?
    • @F3AR3DLEGEND 这行s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = symbols('s0:10') 是可以的,但是我事先不知道变量的数量,所以我需要类似s'0:9' = symbols('s0:9') 的东西,它给出了SyntaxError
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多