Python,Sympy计算多元函数

MeH*_*How 1 python sympy

让我们假设我们有两个列表:

variables = ['a','b','c'...]
values = [1,2,3...]
Run Code Online (Sandbox Code Playgroud)

和一个简单的产品功能:

function = 'a*b*c*...*z'
Run Code Online (Sandbox Code Playgroud)

我尝试过这种方式(我确实意识到这是100%不正确的,但是我不知道如何将多个变量替换为简化的表达式):

import sympy
y = sympy.sympify(function).evalf(subs={variable:values})
Run Code Online (Sandbox Code Playgroud)

Eri*_*nil 5

这里有一个完整的例子。你只需要zip在两个列表混合。从文档中

要同时执行多个换人,合格(旧,新)成对潜艇列表。

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
Run Code Online (Sandbox Code Playgroud)

作为奖励:

  • 您不需要建立额外的字典
  • 您会从中获得确切的整数作为输出subs(),而不仅仅是从中得到浮点数evalf()