2016-06-14 75 views
3

我有這樣的代碼,其中sympy函數傳遞到列表:匿名sympy表達

if name == "sqrt": 
     func.append(sympy.sqrt) 
    elif name == "abs": 
     funcs.append(sympy.Abs) 
    elif name == "sin": 
     funcs.append(sympy.sin) 
    elif name == "cos": 
     funcs.append(sympy.cos) 
    elif name == "tan": 
     funcs.append(sympy.tan) 
    elif name == "exp": 
     funcs.append(sympy.exp) 

等。我需要替換(我知道這是不正確的語法)sympy.exp(x)sympy.Min(1, sympy.exp(x))。我怎麼能這樣做,使參數是隱含的,我可以將它添加到列表中,就像使用內置函數一樣?

+0

所有這些情況下,'name'是一樣的功能可以通過'funcs.append(GETATTR(sympy,名))' – Kundor

回答

0

使用lambda表達式:funcs.append(lambda x: sympy.Min(1, sympy.exp(x)))

+1

這就是我想覆蓋,但沒有按這不符合象徵性的東西?像印刷和其他。 –

+0

Mmm,'type((lambda x:sympy.Min(1,sympy.exp(x)))(1))'''class'sympy.core.numbers.One'>' - 那不好嗎?不太熟悉sympy。 –

+1

您可以使用'sympy.Lambda(x,sympy.Min(1,sympy.exp(x))'創建一個符號lambda。 – asmeurer