>>> a = []
>>> b = [a*2]
>>> b
[[]]
>>> b = [copy.deepcopy(a)*2]
>>> b
[[]]
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建b一个包含两个副本的列表a.为什么b不[[],[]]呢?我怎样才能让这个b是[[],[]]?
如果你想创建b相a在这两次:
a = []
b = [a] * 2
Run Code Online (Sandbox Code Playgroud)
但要注意,列表是可变的!
b[1].append('foo')
b
[['foo'], ['foo']]
Run Code Online (Sandbox Code Playgroud)
如果你想有两个创建b 副本的a:
b = [a[:] for i in range(2)]
Run Code Online (Sandbox Code Playgroud)
要更好地控制副本的性质(vs绑定),请阅读python 副本模块文档.