【问题标题】:Initialise array of empty arrays初始化空数组数组
【发布时间】:2012-02-19 20:15:03
【问题描述】:

这是我的代码:

a = [[]] * 10
a[0].append(1)
print a # Outputs [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

如何让a 输出

[[1], [], [], [], [], [], [], [], [], []]

?

【问题讨论】:

标签: python


【解决方案1】:

试试

a=[[] for i in xrange(10)]

在您的代码中,您添加了 10 次相同的列表。以下输出应阐明这一点:

>>> a=[[]] * 5
>>> for i in a: print id(i)
... 
155302636
155302636
155302636
155302636
155302636
>>> a=[[] for i in xrange(5)]
>>> for i in a: print id(i)
... 
155302668
155302732
155302924
155303020
155303052

如您所见,在第一个示例中,a 包含 5 次对同一数组对象的引用,在第二个示例中,它包含对 5 个不同数组对象的引用。

【讨论】:

    【解决方案2】:

    您当前的代码创建了一个包含相同数组十次的数组。

    使用[[] for i in xrange(10)],这样您实际上可以创建单独的数组。

    【讨论】:

      【解决方案3】:

      试试这个:

      >>> a = [[] for i in range(10)]
      >>> a[0].append(1)
      >>> a
      [[1], [], [], [], [], [], [], [], [], []]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多