【问题标题】:Create sub-lists in lists in Python [duplicate]在 Python 中的列表中创建子列表 [重复]
【发布时间】:2013-09-01 19:52:37
【问题描述】:

我试图弄清楚如何在 Python 中将子列表添加到列表中。例如,我之前使用的代码只是:

pop = [[],[],[],[],[],[],[],[],[],[]]

但我想将用户输入添加到 pop 数组的长度,即。添加了多少个数组。我查看了其他一些 stackoverflow 问题,其中一些建议如下:

popLen = 5
pop = [None]*popLen

但是当我尝试创建一个包含 5 个 None 元素而不是空数组的列表时。我试过了:

pop = [[]]*popLen

子列表的正确方法是什么?

【问题讨论】:

  • 您的代码不会抛出任何错误。但它还有一些其他问题。

标签: python arrays


【解决方案1】:

pop = [[]]*popLen 应该可以工作,但它可能不是您想要的,因为它创建了一个列表,其中填充了 same 嵌套列表 popLen 次,这意味着对列表元素之一的更改会出现在其他人身上:

>>> a = [[]] * 3
>>> a[0].append(42)
>>> a
[[42], [42], [42]]

更好的选择是

pop = [[] for _ in range(popLen)]  # use xrange() in Python 2.x

消除了这个问题:

>>> a = [[] for _ in range(3)]
>>> a[0].append(42)
>>> a
[[42], [], []]

【讨论】:

    【解决方案2】:

    你可以这样做:

    pop = [[] for x in range(popLen)]
    

    不要尝试将[[]] 相乘 - 这实际上会起作用,但会做一些与您预期不同的事情(它会为您提供相同列表的副本,因此您无法单独更改它们)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2018-06-25
      • 2015-04-25
      • 2019-06-16
      • 1970-01-01
      相关资源
      最近更新 更多