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

2024-04-25 09:40:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想将[1]附加到主列表tree的第一个list元素,但是[1]会附加到每个list元素。你知道吗

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

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

我想要的是:

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

Tags: tree元素列表listprintappend
3条回答

使用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])

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

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

解决办法是:

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

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

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

相关问题 更多 >