重新分配从Python中的函数返回的值

时间:2013-11-19 18:13:14

标签: python function python-2.7 variable-assignment

我的头衔可能有点偏,但我真的不知道如何制定自己。

假设我有一个函数,它接受一个数据结构和一些其他参数,并从该数据结构中返回一个值。如何重新分配该返回值?

以下是我想要做的一个简单示例:

假设我有一个函数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]

3 个答案:

答案 0 :(得分:1)

这是你想要的吗?

def foo(thelist, n):
     thelist.append(n)
     return thelist

或者你想插入吗?

def foo(thelist, i, n):
     thelist.insert(i , n)
     return thelist
阅读完你自己编辑后的@OP;查看linklink,这里有一个可能有用的例子。

根据stackoverflow帖子;答案是否定的。

答案 1 :(得分:0)

我仍然不明白你想要达到的目标,所以请详细说明。现在它看起来像你需要的是

def foo(l, n, number):
    ...logic...
    l[n] = number
    return l

编辑:阅读完编辑后,没有。该函数将,而不是引用返回到列表中的项目。

答案 2 :(得分:0)

你要求的是不可能的(原因是你不能指定2到0)。如果你使用宏,而不是使用函数,那么你可以实现它。 python没有像C一样的宏。但是有一次看看macropy在python中编写宏。