2024-04-25 09:40:23 发布
网友
我只想将[1]附加到主列表tree的第一个list元素,但是[1]会附加到每个list元素。你知道吗
tree = [[]] * 5 tree[0].append([1]) print tree >>>[[[1], [1], [1], [1], [1]]]
我想要的是:
>>>[[[1]],[],[],[],[]]
使用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 = [[]] * 5 >>> id(tree[0]) 139859652123032 >>> id(tree[1]) 139859652123032
解决办法是:
>>> tree = [[], [], [], [], []] >>> tree[0].append([1]) >>> tree [[[1]], [], [], [], []]
我的问题是与*相乘会创建相同元素的引用。我应该使用:
tree = [[] for i in xrange(5)]
使用for语句迭代并添加每个分支
最后,将“[1]”附加到第一个列表中
创建列表(
tree = [[]] * 5
)的方式就是问题所在。列表中的所有5个列表都是相同的对象,您可以在使用方法id()
时看到这些对象:解决办法是:
我的问题是与*相乘会创建相同元素的引用。我应该使用:
相关问题 更多 >
编程相关推荐