这是我的代码:
a = [[]] * 10
a[0].append(1)
print a # Outputs [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
如何让a
输出
[[1], [], [], [], [], [], [], [], [], []]
答案 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], [], [], [], [], [], [], [], [], []]