我需要在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列表混乱
我有一个关于Python列表的小问题:
为什么会这样?
x = [[]] * 4
x[0].append('x') -> [['x'], ['x'], ['x'], ['x']]
Run Code Online (Sandbox Code Playgroud) 我对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)
有人可以解释诀窍在哪里?