【问题标题】:Append a list item creates duplicate附加列表项会创建重复项
【发布时间】:2020-07-07 11:00:25
【问题描述】:

我有一个列表列表,其中复制了一个列表元素,如果我调整初始元素,新创建的元素也会被修改。

这是一个错误吗?

alfa = [[1,2,3,4],[5,6,7,8]]
alfa.append(alfa[0])
alfa[0].insert(0, 'a')

即使我只在列表 alfa 的第一个元素中证明了“a”,它也被添加到了第三个元素中。

我怎样才能避免这种情况?

谢谢

【问题讨论】:

    标签: python-3.x list append


    【解决方案1】:

    您正在附加alfa[0] 的引用,因此附加列表中的任何更改也将反映在初始alfa[0] 中,您可以通过将alfa 列表的副本附加到列表@987654324 来解决此问题@:

    alfa.append(alfa[0].copy())
    alfa[0].insert(0, 'a')
    # [['a', 1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
    

    【讨论】:

      【解决方案2】:

      当您将alfa[0] 附加到alfa 时,您会将第一项的引用附加到 alfa。所以第一项和最后一项是同一个对象。所以修改第一项或第三项,都会同时改变。

      您需要附加一个新对象,该对象是第一个对象的副本,而不是附加引用。 示例:

      alfa = [[1,2,3,4],[5,6,7,8]]
      # Magic is `list()`:
      alfa.append(list(alfa[0]))
      alfa[0].insert(0, 'a')
      # Give: [['a', 1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
      

      更好的解释:How to clone or copy a list?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多