首页 > 解决方案 > 为什么更改矩阵的元素会同时更改两行?

问题描述

我有以下代码。

x = [['']*2]*2 # [['', ''], ['', '']]
x[0][0] = 'a'

这会产生以下内容。但为什么?当我实际上只是更改了第一个列表的第一个元素时。

[['a', ''], ['a', '']]

或者[['']*cols]*rows不是在 Python 中创建矩阵的正确方法?

标签: pythonlistpython-2.7

解决方案


因为python两次使用相同的列表并且只是引用它。

您可以使用函数 copy() 创建副本或使用 numpy 创建空矩阵(检查https://stackoverflow.com/a/13347614/1223945


推荐阅读