2017-09-04 6 views
1

sympy에서 1을 곱하기 위해 곱셈을하지 않으려합니다. 이것을 어떻게 성취합니까?sympy에서 1의 곱셈을 피하십시오.

왜 1에 의한 곱셈이 항상 평가되는지 알 수 없는데, 0으로 곱셈은 평가되지 않을 수 있습니다.

>>> from sympy import Symbol,Mul 
>>> x = Symbol('x') 
>>> Mul(1,x,evaluate=False) 
x 
>>> Mul(0,x,evaluate=False) 
0*x 
+0

은 인쇄 만하는 최종 목표입니까, 아니면 나중에 표현식을 평가하고 싶습니까? – rodgdor

+0

나는 Mul (숫자, 무언가)의 형태로 가정하고 많은 용어를 파싱하는 일종의 코드 생성기를 작성했다. 물론 파서를 수정할 수는 있지만 여전히 궁금합니다. 올바른 동작은 Mul (1, x, evaluate = False)이 args = (1, x)가있는 Mul이되어야한다고 생각합니다. –

답변

1

이 작업은 https://github.com/sympy/sympy/pull/13188에서 이루어지고 있습니다. 현재, evaluate = False 인 경우에도 1 (Muls의 경우) 및 0 (Add의 경우)이 자동으로 제거됩니다. (number, foo)로 구문을 분석하려는 경우 expr.as_coeff_Mul()을 사용할 수 있습니다. (1+x).as_coeff_Mul() -> (1, 1 + x).