相关疑难解决方法(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万
查看次数

python空列表技巧

可能重复:
Python列表混乱

我有一个关于Python列表的小问题:

为什么会这样?

x = [[]] * 4
x[0].append('x') -> [['x'], ['x'], ['x'], ['x']]
Run Code Online (Sandbox Code Playgroud)

python list

2
推荐指数
1
解决办法
311
查看次数

Python列出了混乱

可能重复:
Python中的"最小惊讶":Mutable Default Argument
Python列表混乱

我对Python中的列表列表感到有些困惑.我有这两个片段:

li1 = [['a'], ['a'], ['a']]
print li1
for i in range(0, len(li1)):
    li1[i] += [i]
print li1

li2 = [['a']] * 3
print li2
for i in range(0, len(li2)):
    li2[i] += [i]
print li2
Run Code Online (Sandbox Code Playgroud)

创建后li1和li2是相同的,但是当我添加元素时,它们的行为有所不同:

[['a'], ['a'], ['a']]
[['a', 0], ['a', 1], ['a', 2]]
[['a'], ['a'], ['a']]
[['a', 0, 1, 2], ['a', 0, 1, 2], ['a', 0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)

有人可以解释诀窍在哪里?

python list

-1
推荐指数
1
解决办法
83
查看次数

标签 统计

list ×3

python ×3

mutable ×1

nested-lists ×1