使用for循环无法更新矩阵元素,对float值四舍五入保留3位小数后矩阵未变化
原因分析
- Python中的float属于不可变数据类型,嵌套循环中拿到的
number只是原矩阵对应元素的值拷贝,对number直接赋值只会修改临时变量的指向,不会写入原矩阵的对应存储位置,因此原矩阵不会发生变化。
修复代码
通过下标索引定位到原矩阵的元素位置,直接赋值覆盖原值即可:
M = [[1.0, 0.6666666666666666, 0.0, 0.5098039215686274], [-0.0, -0.0, 1.0, 0.4117647058823529]] for arr_idx in range(len(M)): for num_idx in range(len(M[arr_idx])): M[arr_idx][num_idx] = round(M[arr_idx][num_idx], 3) print(M)
运行输出结果:[[1.0, 0.667, 0.0, 0.51], [-0.0, -0.0, 1.0, 0.412]]
内容的提问来源于stack exchange,提问作者Fullaccess
相关产品推荐
相关产品推荐

