有人可以解释为什么:
b = 10*[[]]
b[0].append(3)
Run Code Online (Sandbox Code Playgroud)
b 现在是:
[[3], [3], [3], [3], [3], [3], [3], [3], [3], [3]]
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
b = [[] for _ in range(10)]
b[0].append(3)
Run Code Online (Sandbox Code Playgroud)
b 现在是:
[[3], [], [], [], [], [], [], [], [], []]
Run Code Online (Sandbox Code Playgroud)
还要注意的是
10*[[]] == [[] for [] in range(10)]
Run Code Online (Sandbox Code Playgroud)
返回
True
Run Code Online (Sandbox Code Playgroud)
(在 Python 3.6.1 中测试)