一尘不染

Python列表乘法:[[…]] * 3构成3个列表,它们在修改后会相互镜像

python

为什么会这样呢?我不太了解:

>>> P = [ [()]*3 ]*3
>>> P
[[(), (), ()], [(), (), ()], [(), (), ()]]
>>> P[0][0]=1
>>> P
[[1, (), ()], [1, (), ()], [1, (), ()]]

阅读 496

收藏
2020-02-21

共1个答案

一尘不染

你已对同一列表进行了3次引用。

>>> a = b = []
>>> a.append(42)
>>> b
[42]

你想这样做:

P = [[()] * 3 for x in range(3)]
2020-02-21