Запись функции двух переменных как функции в одной переменной

Допустим, у меня есть следующая функция, которая находится в 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(x):
    return banana(*x)

Вы могли бы написать:

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)
Другие вопросы по тегам