我们假设我们有两个列表:
variables = ['a','b','c'...]
values = [1,2,3...]
和简单的产品功能:
function = 'a*b*c*...*z'
我尝试这样做(我确实认为它100%不正确,但我不知道如何将多个变量替换为sympified expression):
import sympy
y = sympy.sympify(function).evalf(subs={variable:values})
答案 0 :(得分:4)
这是一个完整的例子。您只需要zip
来混合两个列表。来自documentation:
要一次执行多次替换,请传递一个(旧的,新的)列表 成对子。
from sympy import sympify
variables = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
values = range(1, len(variables) + 1)
expression = '*'.join(variables)
sub_table = zip(variables, values)
print values
# [1, 2, 3, 4, 5, 6, 7]
print expression
# a*b*c*d*e*f*g
print sub_table
# [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)]
print sympify(expression).subs(sub_table)
# 5040
作为奖励:
subs()
的输出,而不只是来自evalf()
的浮点数。