创建多维列表并附加元素[]

时间:2016-04-01 01:08:36

标签: python python-2.7

我只想将[1]附加到主列表树的第一个列表元素中,但[1]会附加到每个列表元素。

tree = [[]] * 5
tree[0].append([1])
print tree

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

我想要的是什么:

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

3 个答案:

答案 0 :(得分:0)

您创建列表的方式(tree = [[]] * 5)就是问题所在。列表中的所有5个列表都是相同的对象,使用方法id()时可以看到:

>>> tree = [[]] * 5
>>> id(tree[0])
139859652123032
>>> id(tree[1])
139859652123032

解决方案是:

>>> tree = [[], [], [], [], []]
>>> tree[0].append([1])
>>> tree
[[[1]], [], [], [], []]

答案 1 :(得分:0)

我的问题是乘以*会创建相同元素的引用。我应该使用:

tree = [[] for i in xrange(5)]

答案 2 :(得分:0)

使用for语句迭代并添加每个分支

tree = [[] for i in xrange(5)]   
    # xrange() and range() will have the same result, but the former is a cheaper iterator

最后,将'[1]'附加到第一个列表

tree[0].append([1])