相关疑难解决方法(0)

列表更改意外地反映在子列表中

我需要在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)

这不是我想要或期望的.有人可以解释一下发生了什么,以及如何解决这个问题?

python list mutable nested-lists

576
推荐指数
10
解决办法
3万
查看次数

为什么列表函数和列表文字的行为不同?

我试图创建一个包含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)

它给出了正确的输出。有人可以解释为什么吗?

python list

4
推荐指数
1
解决办法
104
查看次数

标签 统计

list ×2

python ×2

mutable ×1

nested-lists ×1