python如何附加到列表工作?

时间:2016-09-25 17:46:47

标签: python list append

我在python中遇到了一个附加到列表的问题。我实施的代码是:

a=[1,2]
b=[3,4]
a.append(b)
b.append(5)
print a
print b

我对python append的理解是这段代码的预期输出是:

预期产出

a=[1,2,[3,4]]
b=[3,4,5]

但实际输出是不同的。 实际产出

a=[1,2,[3,4,5]]
b=[3,4,5]

我只想知道为什么会这样。

由于我将b列表添加到a,在将5追加到b之前,列表a应该有[1,2,[3,4]]

1 个答案:

答案 0 :(得分:10)

Python名称为references,并且附加到列表会附加对同一对象的引用。

换句话说,您没有附加b列表的副本。 a列表和名称b共享对同一个对象的引用:

>>> a = [1, 2]
>>> b = [3, 4]
>>> a.append(b)
>>> a[-1] is b  # is tests if two references point to the same object
True
>>> id(a[-1]), id(b)  # id produces a unique number per object
(4595716320, 4595716320)

如果您希望将b列表的副本添加到a,请明确这样做:

a.append(b[:])

a.append(list(b))

请参阅How to clone or copy a list?