在函数中附加列表

时间:2014-11-27 21:37:03

标签: python

我仍然对如何在python中传递参数感到困惑。 我认为非原始类型是通过引用传递的,但为什么下面的代码不能打印[1]呢?

def listTest(L):
    L = L + [1]


def main:
    l = []
    listTest(l)

    print l #prints []

我怎么能让它发挥作用。 我想我需要通过引用传递“指向L的指针”

1 个答案:

答案 0 :(得分:4)

listTest()中,您重新绑定 L到新的list对象; L + [1]创建一个新对象,然后将其分配给L。这样就保留了list之前引用的原始L对象。

您需要通过调用list上的方法直接操纵L引用的list.append()对象,例如def listTest(L): L.append(1)

list.extend()

或者您可以使用def listTest(L): L.extend([1])

def listTest(L):
    L += [1]

或者您可以使用就地分配,这为可变类型提供了就地更改对象的机会:​​

{{1}}