You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SymPy中对符合指定模式的表达式进行批量替换?

在SymPy中批量替换符合模式的表达式实例

当然可以一次性完成这类批量替换,不用手动逐个调用subs。SymPy提供了通配符(Wild)结合replace(或subs)的方式,能匹配所有符合指定模式的子表达式并替换。

具体实现代码

import sympy
from sympy import sqrt, exp, Wild, symbols

x, y = symbols('x y')
test = sqrt(x+y) + sqrt(exp(y))

# 定义通配符,匹配任意子表达式
w = Wild('w')
# 一次性替换所有sqrt(任意内容)为对应内容的0.51次方
result = test.replace(sqrt(w), w**0.51)

print(result)

运行结果

输出会是:

(x + y)**0.51 + exp(y)**0.51

原理说明

  • Wild('w')定义了一个通配符w,它可以匹配SymPy表达式树中的任意合法子表达式。
  • test.replace(sqrt(w), w**0.51)会遍历整个test表达式,把所有符合sqrt(...)结构的子表达式,替换成括号内内容的0.51次方。
  • 你也可以用subs方法实现同样效果,写法是:
    result = test.subs(sqrt(w), w**0.51)
    
    两种方式在这个场景下效果一致。

这种方法完全适用于长表达式,不管里面有多少个sqrt实例,都能一次替换完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:15:49