初始化空数组的数组

时间:2012-02-19 20:15:03

标签: python

这是我的代码:

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

如何让a输出

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

3 个答案:

答案 0 :(得分:12)

尝试

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个不同数组对象的引用。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

试试这个:

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