当我希望它们以不同方式打印时,两个列表打印相同的内容

时间:2015-12-24 01:55:08

标签: python list

我有一个列表a=[[1]]b=[i for i in a]。现在我做b[0].append(2)。当我打印ab时,它们是相同的[[1, 2]][[1, 2]]。看起来列表b[0]引用了一个相同的列表。为什么会这样?

a=[[1]]
b=[i for i in a]
b[0].append(2)
print a,b

输出:[[1, 2]] [[1, 2]]

1 个答案:

答案 0 :(得分:3)

ab是不同的列表。但a[0]b[0]的列表相同,因为您在构建b时没有复制它;这两个列表包含对相同子列表的引用。您可以使用以下内容制作子列表的副本:

b = [i[:] for i in a]

有关复制列表的其他方法,请参阅How to clone or copy a list?

如果您想一次复制所有级别,可以使用copy.deepcopy()

import copy
b = copy.deepcopy(a)