Python查找矩阵首个最大值行列索引出现int不可迭代报错如何解决
错误原因
- 直接报错的根源是代码中
max(M[i][j])的写法错误:M[i][j]是单个整数,而max()函数必须传入可迭代对象才能计算最大值,因此触发int is not iterable的类型错误。 - 额外的逻辑缺陷:原代码没有提前计算整个矩阵的全局最大值,即使修正语法问题也无法正确匹配到目标元素。
修复方案
先计算出整个二维矩阵的全局最大值,再按先行后列的顺序遍历矩阵,返回第一个匹配到最大值的坐标即可,修正后代码如下:
def matrix_max_index(M): # 计算全局最大值 max_value = max(num for row in M for num in row) row_count = len(M) col_count = len(M[0]) for i in range(row_count): for j in range(col_count): if M[i][j] == max_value: return (i, j)
效果验证
输入测试用例 M = [[0, 3, 2, 4], [2, 3, 5, 5], [5, 1, 2, 3]] 时,函数返回结果为(1,2),和预期结果一致。
内容的提问来源于stack exchange,提问作者Agyamarky
相关产品推荐
相关产品推荐

