如何在找到最大值后返回元素的索引

时间:2015-12-03 23:43:07

标签: python

我有一个矩阵[[0 0 0 0 0 0 0] [1 0 0 1 0 0 1] [2 1 0 0 1 0 0]]。我需要返回最大的元素索引最后一行但小于2,它应该返回最高值的索引。

例如,在我的矩阵中,我需要程序返回M [2,4],2,4作为解决方案。我的程序正在运行,但它返回M [2,1]位置的值

M=[[0 0 0 0 0 0 0]
 [1 0 0 1 0 0 1]
 [2 1 0 0 1 0 0]]
    ma=0
    for i in range(1,2):
        for j in range(0,7):
            if M[i,j]<2 and ma<=M[i,j]:
                ma=M[i,j]
                return M[i,j],i,j

1 个答案:

答案 0 :(得分:0)

问题是它太早回归。您应该在扫描完所有元素后返回。在这种情况下,不应将return语句放在内部循环内,将其放在外部for循环之外。另外我认为您需要跟踪最高值的索引以及char buffer[100]; while (fgets(buffer, sizeof buffer, stdin)) { int n = 0; sscanf(buffer, "%d%d%d %n", &a, &b, &c, &n); if (n == 0) { fprintf(stderr, "3 int were not entered\n"); break; } if (buffer[n] != 0) { fprintf(stderr, "Extra input detected.\n"); break; } // do stuff here with a,b,c } ,因为i,j将是循环结束后最后一个元素的值。

原始代码的语法似乎不正确,所以我做了一些修改:

ma

此代码输出所需的结果:def test(): M=[[0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 1], [2, 1, 0, 0, 1, 0, 0]] ma=0 maxi = maxj = 0 for i in range(0,3): for j in range(0,7): if M[i][j] < 2 and ma <= M[i][j]: ma = M[i][j] maxi = i maxj = j return(ma, maxi, maxj) print(test())