【问题标题】:python appending a value to a sublist [duplicate]python将值附加到子列表[重复]
【发布时间】:2013-06-18 00:30:47
【问题描述】:

我的程序遇到了问题,我不确定自己做错了什么。首先,我创建了一个空列表。例如:

>>> Lists = [[]]*12

给出:

>>> Lists
[[], [], [], [], [], [], [], [], [], [], [], []]

但是,当尝试将值附加到单个子列表时,它会将值添加到所有子列表。例如:

>>> Lists[2].append(1)

给予:

>>> Lists
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

有没有办法只附加到一个子列表,这样结果看起来像:

>>> Lists
    [[], [], [1], [], [], [], [], [], [], [], [], []]

【问题讨论】:

  • 您可能想查看this 以了解它为何附加到所有子列表。如果你看第二个图,你可以认为列表中的 12 个元素指向同一个对象[]。现在,当您将 1 附加到您的 Lists[2] 时,它会附加到共享列表对象。因此,Lists 中的所有元素似乎都附加了 1

标签: python list append


【解决方案1】:

List 对象是可变的,因此您实际上是在创建一个包含 12 个对 one 列表的引用的列表。使用列表推导并制作 12 个不同的列表:

Lists = [[] for i in range(12)]

抱歉,我找不到这个确切问题的原始副本

【讨论】:

    【解决方案2】:

    我在尝试解决拓扑排序问题时遇到了同样的问题。

    试试这个:

    Lists[2] = Lists[2]+[1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-14
      • 2017-04-16
      • 2015-08-05
      • 2013-12-30
      • 1970-01-01
      • 2021-04-23
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多