二维矩阵元素更新异常:循环赋值后值未生效原因咨询
循环赋值后矩阵元素未更新的原因及解决方法
先看你的代码:
n = 5 k = 6 matrix = [[j for i in range(n)] for j in range(k)] for element in matrix[3]: print(element) element = 100 print(matrix)
核心原因
你在循环里操作的element只是原列表元素的临时变量,并非直接指向原列表的位置。当执行element = 100时,只是让这个临时变量绑定了新的整数100,完全没有改动原列表里的元素。
另外Python的整数属于不可变类型,你没法直接修改一个整数对象本身的值,只能让变量重新指向新的对象。遍历列表时拿到的element只是原元素的一个"拷贝引用",修改它不会对原列表产生任何影响。
正确的修改方式
要修改原列表的元素,得通过索引定位到具体位置再赋值:
n = 5 k = 6 matrix = [[j for i in range(n)] for j in range(k)] # 遍历索引,直接修改原列表对应位置的元素 for idx in range(len(matrix[3])): print(matrix[3][idx]) matrix[3][idx] = 100 print(matrix)
这样运行后,matrix[3](第4行)的所有元素就会变成100了。
内容的提问来源于stack exchange,提问作者Jacky Liu
相关产品推荐
相关产品推荐

