首页 文章

python如何附加到列表工作? [重复]

提问于
浏览
3

这个问题在这里已有答案:

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

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

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

预期产出

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 回答

  • 9

    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?

相关问题