0

假设我有以下两个变量中的函数 -

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

我想把它写成 -

def banana(x):

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

谢谢你的帮助!

4

6 回答 6

3

解压函数开头的 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)
于 2017-07-23T19:08:56.960 回答
2

是的,这是可能的:

def _banana(x):
    return banana(*x)
于 2017-07-23T19:06:28.820 回答
2

你可以写:

def banana(vector):
    x, y = vector
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
于 2017-07-23T19:07:17.413 回答
1

可能是这样的

def banana(x):
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)
于 2017-07-23T19:06:03.583 回答
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上查看更多信息

于 2017-07-23T19:14:17.833 回答
-1

你可以用列表写

def banana(x):
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)
于 2017-07-23T19:06:30.047 回答