我在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]]
答案 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))