Мое название может быть немного выключено, но я действительно не знал, как сформулировать себя.Переназначение значения, возвращаемого функцией в Python
Скажем, у меня есть функция, которая принимает структуру данных и, возможно, некоторые другие аргументы и возвращает значение из этой структуры данных. Как переназначить это возвращаемое значение?
Вот простой пример того, что я хочу сделать:
Допустим, у меня есть функция Foo,
def foo(x, n):
return x[n]
и список л,
l = [1, 2, 3, 4, 5]
, что я хочу что-то вроде этого:
foo(l, 1) = 0 #this results in an error
Что я хочу привести следующее:
l = [1, 0, 3, 4, 5]
Этот пример может быть тривиальным с другим подходом, но давайте представим свою функцию для извлечения элемента из списка является более сложным.
Редактировать: Возможно, мое описание было слишком неясным, в основном то, что я хочу, является оператором присваивания, который работает как setf в lisp. Я хочу, чтобы моя функция возвращала какой-то указатель на значение в структуре данных. Затем я хочу изменить значение, на которое указывает указатель. То, что я хочу использовать его для в основном что-то вроде этого: (что я не понимаю, почему я не просто начать с как пример)
def foo(l, indexes):
if indexes == []:
return l
else:
return foo(l[indexes[0]], indexes[1:])
l = [[1, 2], 3]
foo(l, [0, 1]) = 0 #Again this is what is not working and I understand why it's not working, I just want something that would do what you think this might do.
Что я хочу привести:
l = [[1, 0], 3]
Когда функция возвращает значение 2, значение больше не 'l [1]', а просто число 2. Это не допустимая переменная для назначения. Что вам нужно сделать, это передать число '0' в функцию и назначить его' l [1] 'внутри функции. – SiddharthaRT
@ndpu, нет, это не совсем то, о чем просит ОП. 'foo' возвращает значение, вы не можете использовать его в качестве индекса. – SiddharthaRT
Поскольку 'foo' возвращает' int' (в этом случае), вы ** НЕ МОЖЕТ ** назначать ему любой другой 'int' (0)! –