2017-07-23 110 views
0

功能比方说,我有以下功能是在2个变量 -写两个变量的函数的一个变量

def banana(x,y): 
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2) 

,我想将它写的 -

def banana(x): 

这里x是两个变量的向量;如果可能的话?

感谢您的帮助!

回答

1

可能类似于

def banana(x): 
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2) 
+1

反引号是只为更少的代码格式化块比一条线。对多行块使用四空间缩进来将格式化作为连续的块和颜色语法呈现。 –

+0

@CharlesDuffy,谢谢! – Entro

+0

NP。 (我冒昧地在这里自己解决这个问题;你可以看看编辑历史来看看它们的区别)。 –

2

是的,这是可能的:

def _banana(x): 
    return banana(*x) 
-1

你可以列出

def banana(x): 
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2) 
2

写你可以写:

def banana(vector): 
    x, y = vector 
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2) 
2

解压ARGS在函数的开头:

def banana(args): 
    x, y = args 
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2) 
定义行

或直接:

def banana((x, y)): 
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2) 
0

呀,当然这是可能的。 您可以使用列表或元组。把你的两个变量到列表或元组

x = [5, 7] # A list 
x = (5, 7) # A tuple 

你函数,那么应该是这样的:

def banana(x): 
    x, y = x # Unpacking 
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2) 

多见于https://docs.python.org/3.6/tutorial/datastructures.html