我需要在Python中创建一个列表列表,所以我输入以下内容:
myList = [[1] * 4] * 3
Run Code Online (Sandbox Code Playgroud)
列表看起来像这样:
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
然后我改变了最里面的一个值:
myList[0][0] = 5
Run Code Online (Sandbox Code Playgroud)
现在我的列表看起来像这样:
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
这不是我想要或期望的.有人可以解释一下发生了什么,以及如何解决这个问题?
我试图创建一个包含n 个空列表的列表,但遇到了一个有趣的情况。
首先我尝试了以下方法:
>>> n = 3
>>> list([]) * n
[]
Run Code Online (Sandbox Code Playgroud)
它创建一个空列表。
之后,我尝试了以下行,它也创建了一个空列表:
>>> list(list()) * n
[]
Run Code Online (Sandbox Code Playgroud)
但是当我用文字尝试同样的方法时,
>>> [[]] * n
[[], [], []]
Run Code Online (Sandbox Code Playgroud)
它给出了正确的输出。有人可以解释为什么吗?