You need to enable JavaScript to run this app. 如何将可变长度取值列表传入lambdify生成的函数计算数学表达式
优惠活动
大模型
产品
解决方案
定价
更多

如何将可变长度取值列表传入lambdify生成的函数计算数学表达式

解决方案

直接使用Python的序列解包语法即可实现需求:在取值列表list_values前添加*符号,即可将列表内的元素按顺序展开为函数的位置参数,完全匹配动态生成的f的入参要求,无需提前知晓参数数量。

完整实现示例

from sympy import lambdify

def evaluate(expression, list_var, list_values):
    f = lambdify(list_var, expression)
    # 核心逻辑:用*解包列表作为位置参数
    return f(*list_values)

测试用例(匹配你给出的示例场景)

from sympy import symbols

# 定义符号变量、表达式、变量列表、取值列表
x, y = symbols('x y')
expr = "x + 3 - y"
list_var = [x, y]
list_values = [5, 2] # x取5,y取2

# 调用函数计算
result = evaluate(expr, list_var, list_values)
print(result) # 输出为6,等价于直接执行f(5, 2)

注意事项

  • 需保证list_values的长度、元素顺序和list_var完全一一对应,否则会出现变量赋值错误、参数数量不匹配的报错。
  • 该方法支持任意长度的变量列表,无需提前适配参数数量。

内容的提问来源于stack exchange,提问作者BJB ChessEmperor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 15:45:07