python - 为什么更改矩阵的元素会同时更改两行?
问题描述
我有以下代码。
x = [['']*2]*2 # [['', ''], ['', '']]
x[0][0] = 'a'
这会产生以下内容。但为什么?当我实际上只是更改了第一个列表的第一个元素时。
[['a', ''], ['a', '']]
或者[['']*cols]*rows
不是在 Python 中创建矩阵的正确方法?
解决方案
因为python两次使用相同的列表并且只是引用它。
您可以使用函数 copy() 创建副本或使用 numpy 创建空矩阵(检查https://stackoverflow.com/a/13347614/1223945)
推荐阅读
- shell - 比较文本文件中的日期 | 壳
- node.js - 如何在 MongoDb mongoose 中比较多个对象并按标准优先级排序
- excel - 使用 Excel VBA 验证条件格式
- c# - 如何在 Unity 的“if”条件下检查 OnTriggerEnter 函数是否被调用?
- c# - 将 SQL 查询转换为实体框架的问题
- java - Android Studio+FireBase 帐户设置抛出错误
- linux - 将 rpm 文件转换为 debian 错误(包构建失败)
- java - AWS SQS Maven 依赖项抛出 java.lang.NoClassDefFoundError : software/amazon/awssdk/services/sqs/SqsClient On Runtime
- types - 在 Julia 中调度具体抽象类型与参数类型
- r-raster - 如何重新分配 R 星对象中的单元格/像素值