2
我想將鼠尾草symoblic表達式轉換等:轉換鼠尾草符號表達爲字符串
y = 5*x + 7^x + 3*x^2
到我可以通過下標訪問的字符串(Y [0] = '5',Y [1] = 「*」等
我需要做,因爲我要計算在表達式特定變量的出現次數。在上面的例子中變量「X」 occures 3次。
我會也很感謝,如果有人知道另一種方式來實現這一點。
我想將鼠尾草symoblic表達式轉換等:轉換鼠尾草符號表達爲字符串
y = 5*x + 7^x + 3*x^2
到我可以通過下標訪問的字符串(Y [0] = '5',Y [1] = 「*」等
我需要做,因爲我要計算在表達式特定變量的出現次數。在上面的例子中變量「X」 occures 3次。
我會也很感謝,如果有人知道另一種方式來實現這一點。
我認爲每個人都在誤讀這個問題 - 我們從一個賢者的象徵性表達開始。
sage: y = 5*x + 7^x + 3*x^2
sage: y
7^x + 3*x^2 + 5*x
sage: type(y)
<type 'sage.symbolic.expression.Expression'>
我會用operands()
和operator()
寫一點遞歸沃克:
def var_counter(someexpr, v):
tor = someexpr.operator()
if tor is None:
return int(v in someexpr.variables())
else:
return sum(var_counter(operand, v) for operand in someexpr.operands())
這似乎工作:
sage: x, x2, x3 = var("x x2 x3")
sage: y = 5*x + 7^x + 3*x^2 + x2**(x3+3*sin(x))
sage: var_counter(y, x)
4
sage: var_counter(y, x2)
1
sage: var_counter(y, x3)
1
如果你想表達轉換爲字符串,只需致電str
:
sage: str(y)
'7^x + 3*x^2 + 5*x + x2^(x3 + 3*sin(x))'
sage: str(y)[2]
'x'
sage: str(y)[6]
'3'