Python:如何在不克隆的情况下复制复制列表

时间:2017-03-04 21:47:49

标签: python python-3.x

当我输入t=[[False]*2]*2时,我会获得列表[[False, False], [False, False]]。但是,当我输入t[0][0] = True时,t[1][0]也会更改为True,留给我[[True, False], [True, False]]。我只想要[[True, False], [False, False]]。作为第二种选择,我可以指定t=[[False]*2, [False]*2],然后更改t[0][0] = True获取我想要的内容([[True, False], [False, False]]),但我的真实列表比那要大很多,所以我宁愿不要使用选项2.我认为这是克隆与使用列表复制的类似问题,所以我试过: ([[False]*2])*2

([False]*2)*2

[[False]*2][:]*2

t = [False]*2 t = t*2

list([False]*2)*2

list([[False]*2])*2

[list([False]*2)]*2。这些都没有奏效。有没有办法在不导入任何包的情况下这样做?

1 个答案:

答案 0 :(得分:0)

如果使用列表推导构建列表,则每个列表对象将指向唯一的地址,而不是共享相同的引用。

t = [[False for x in range(2)] for y in range(2)]
t[0][0] = True
t  # [[True, False], [False, False]]