我的头衔可能有点偏,但我真的不知道如何制定自己。
假设我有一个函数,它接受一个数据结构和一些其他参数,并从该数据结构中返回一个值。如何重新分配该返回值?
以下是我想要做的一个简单示例:
假设我有一个函数foo,
def foo(x, n):
return x[n]
和列表l,
l = [1, 2, 3, 4, 5]
我想做的是这样的事情:
foo(l, 1) = 0 #this results in an error
我想要产生这个:
l = [1, 0, 3, 4, 5]
这个例子对于另一种方法可能是微不足道的,但让我们想象一下,从列表中检索项目的功能更复杂。
编辑: 也许我的描述太不清楚,基本上我想要的是一个赋值运算符,就像lisp中的setf一样。 我希望我的函数返回某种指向数据结构中的值的指针。然后我想要更改指针指向的值。 我想用它来做什么我基本上是这样的:(我不明白为什么我不只是作为一个例子开始)
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]
答案 0 :(得分:1)
这是你想要的吗?
def foo(thelist, n):
thelist.append(n)
return thelist
或者你想插入吗?
def foo(thelist, i, n):
thelist.insert(i , n)
return thelist
阅读完你自己编辑后的@OP;查看link和link,这里有一个可能有用的例子。
根据stackoverflow帖子;答案是否定的。
答案 1 :(得分:0)
我仍然不明白你想要达到的目标,所以请详细说明。现在它看起来像你需要的是
def foo(l, n, number):
...logic...
l[n] = number
return l
编辑:阅读完编辑后,没有。该函数将值,而不是引用返回到列表中的项目。
答案 2 :(得分:0)
你要求的是不可能的(原因是你不能指定2到0)。如果你使用宏,而不是使用函数,那么你可以实现它。 python没有像C一样的宏。但是有一次看看macropy在python中编写宏。