Python:在lambdified sympy表达式中使用容器的优雅方式

时间:2017-10-25 15:11:45

标签: python sympy lambdify

假设我有一个包含一些数值的容器类:

hashCode()

我想给那些System.out.println("Aa".hashCode() + "," + "BB".hashCode()); 一个lambdified sympy表达式,结果得到一个新的class Container: def __init__(self, value): self.value = value

Container

现在我真的不介意在Container周围编写一些解包并打包值的包装器,但问题出在这里:

与Numpy一样,我也希望它能够处理与值混合的列表或列表:

import sympy as sp
a = Container(1)
b = Container(-0.5)
x, y = sp.symbols("x y")
f = sp.lambdify((x, y), sp.atan(x)**-1*sp.pi*10 - 1/y)
result = f(a, b) # result should be a Container with value 42

实现这一目标的优雅方式是什么?

修改

我已经编写了一个围绕lambdify的包装函数,它在应用sympy表达式并打包结果之前解包值,但它涉及检查参数的类型是f还是a = Container(-47) b = Container(19) c = [Container(0), Container(1), Container(2), Container(3), Container(4)] x, y, z = sp.symbols("x y z") f = sp.lambdify((x, y, z), z**4 + x/6*z**3 + y*z**2 + (x-2*y)/6*z + 3) result = f(a, b, c) # should be a list of Containers with values 3, 1, 4, 1 and 5 这违背了Python的整个鸭子式的哲学。我的实际问题是:是否有更多的pythonic方法可以做到这一点,不涉及丑陋的类型检查?

0 个答案:

没有答案