Python 使用乘法创建包含列表的列表

Python 使用乘法创建包含列表的列表,python,list,Python,List,我试图创建一个由两个a副本组成的列表b。为什么b不是[[],[]]?我怎样才能使b是[[],[]]?如果您想在其中创建两次a,您可以尝试这个b=[a for I in xrange(2)]: 但是要当心,列表是很重要的 如果要使用两份a创建b: b[1].append('foo') b [['foo'], ['foo']] 要更好地控制副本的性质(与绑定相比),请阅读python模块文档。将列表*2相乘,与将其添加到自身相同。但如果你这样做了: b = [a[:] for i in range

我试图创建一个由两个
a
副本组成的列表
b
。为什么
b
不是
[[],[]]
?我怎样才能使
b
[[],[]]

如果您想在其中创建两次
a
,您可以尝试这个
b=[a for I in xrange(2)]

但是要当心,列表是很重要的


如果要使用两份
a
创建b:

b[1].append('foo')
b
[['foo'], ['foo']]

要更好地控制副本的性质(与绑定相比),请阅读python模块文档。

将列表*2相乘,与将其添加到自身相同。但如果你这样做了:

b = [a[:] for i in range(2)]
请注意,您不会得到
[[1],[2]]
——这不是将列表添加在一起的意思。添加两个列表将得到一个包含两个列表中所有元素的列表

因此,在这些行上,
[]*2
生成一个类似于
[]
的列表,因为如果执行
[]+[]
操作,也会得到一个列表,其中包含两个列表中的所有元素,由于两个输入列表都为空,因此也为空。然后,将其放入另一个列表中,以
[[]]
结束


其他答案已经涵盖了生成此结果的其他方法,因此我不会重复这些方法。

感谢您尝试避开另一个肤浅的复制问题。
b[1].append('foo')
b
[['foo'], ['foo']]
b = [a[:] for i in range(2)]
a = [1]
b = [2]
a + b
[1, 2]