【问题标题】:appending nested list - is it supposed to work this way? [duplicate]附加嵌套列表 - 它应该以这种方式工作吗? [复制]
【发布时间】:2012-09-28 05:31:28
【问题描述】:

可能重复:
Unexpected feature in a Python list of lists
How to initialize a two-dimensional array in Python?

我想创建一个 nsize 的嵌套列表,然后根据标准将项目一个接一个地添加到其中。

为此,我这样写(nsize = 4)

a = [[]] * 4  # which creates on display a = [ [] , [] , [] , [] ]

现在我做这样的事情a[1].append(3) 给我输出[[3], [3], [3], [3]]

我在这里做错了什么?不应该只用值 3 更新第二个列表( a[1] )吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    您正在做的事情是创建一个包含 4 个对同一子列表的引用的列表。

    你需要改为a = [[] for _ in xrange(4)]

    【讨论】:

      【解决方案2】:

      是的,它应该以这种方式工作,尽管它经常令人惊讶。相当于这个

      b=[]
      a=[b]*4
      

      那么当你说a[1].append(3)时,就像说b.append(3)一样。由于a 包含对同一列表的四个引用,因此当您打印a 时,您会看到它出现了四次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2016-01-31
        • 2021-12-30
        • 1970-01-01
        • 2016-11-02
        相关资源
        最近更新 更多