Запись функции двух переменных как функции в одной переменной
Допустим, у меня есть следующая функция, которая находится в 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 здесь - вектор двух переменных; если это возможно?
Спасибо за вашу помощь!
6 ответов
Решение
Может быть что-то вроде
def banana(x):
return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)
Распакуйте аргументы в начале вашей функции:
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)
Вы могли бы написать:
def banana(vector):
x, y = vector
return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
Да, конечно, это возможно. Вы можете использовать список или кортеж. Поместите две переменные в список или кортеж
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
Вы можете написать со списками
def banana(x):
return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)