尝试重写列表列表中的单个元素,但整个列表都被重写-为什么?

时间:2018-10-16 11:41:17

标签: python python-3.x list

我创建一个包含零的列表的列表:

l1 = [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'a', 'z'), (4, 'c', 'xyz')]
l2 = ['a', 'b', 'c']
d2 = {v: i for i, v in enumerate(l2)}  # map elements to indexes
# {'a': 0, 'b': 1, 'c': 2}

sorted(l1, key=lambda x: d2[x[1]])
# [(1, 'a', 'x'), (3, 'a', 'z'), (2, 'b', 'y'), (4, 'c', 'xyz')]

效果很好:

grid = [[0]*5]*5

我可以访问每个元素,例如:

[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]

按预期输出grid[2][2] 。但是,当我尝试通过以下方式重写此元素时:

0

然后我检查网格,该网格变为:

grid[2][2]=1

我期望:

[[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]]

我想念什么,为什么我没有得到想要的输出?

0 个答案:

没有答案