-4

在运行下面的函数之前,l1是一个空列表,但是为什么在运行函数之后它是[1,2,3]?

def copylist(lsource, ldest):
    for e in lsource:
        ldest.append(e)
    print 'ldest =',ldest


l1 = []
l2 = [1, 2, 3]
copylist(l2, l1)
print l1  # displays [1, 2, 3]
print l2  # displays [1, 2, 3]  
4

4 回答 4

1

您似乎期望列表像传递值一样被处理,因为它可能在其他语言中。Python 参数更像是传递引用,并且由于列表是可变的,它完全按照您的要求执行。

你对 Python 越熟悉,这看起来就越明显、自然、甚至方便。

于 2013-10-05T21:42:56.433 回答
0

什么ldest?这是您传入的任何内容。在这种情况下,您传入了l1. ldest并且l1是同一个列表。因此,您使用什么名称来引用该对象并不重要。

于 2013-10-05T23:41:52.410 回答
0

对于 lsource 的每个元素,如果它存在于 ldest,那么它将被附加到 ldest。因此,l2 的所有元素都被复制到(而不是移动到)l1。

于 2013-10-05T22:11:51.853 回答
0

python 通过引用传递对象。这意味着您将元素添加到您传递的实际对象中。

于 2013-10-05T21:43:25.463 回答