Python:初始化空嵌套列表时的奇怪列表行为



有人可以解释为什么:

b = 10*[[]]
b[0].append(3)

b 现在是:

[[3], [3], [3], [3], [3], [3], [3], [3], [3], [3]]

但如果我这样做:

b = [[] for _ in range(10)]
b[0].append(3)

b 现在为:

[[3], [], [], [], [], [], [], [], [], []]

另请注意

10*[[]] == [[] for [] in range(10)]

返回

True

(在Python 3.6.1中测试(

because:
>>> b = 10*[[]]
>>> b[0] is b[1]
True
>>> b = [[] for _ in range(10)]
>>> b[0] is b[1]
False
>>>

最新更新