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]