嵌套For循环以查找最大价值

时间:2019-10-19 04:32:04

标签: python

我正在学习如何使用嵌套循环。我需要找到'n x n'矩阵最大值的位置,并且我了解我需要包含一个条件语句,一旦确认最大值,该条件语句将停止嵌套的for循环。到目前为止,我设法编写了一个嵌套循环,该循环遍历矩阵的每一行和每一列以输出其最终位置。

要找到矩阵的最大值,我知道一种可能的方法是使用:

max(sum(matrix, []))

但是,我不完全确定在哪里放置此条件才能返回我要查找的内容。

3 个答案:

答案 0 :(得分:1)

当您执行for i in range(n)时,i将在循环的每次迭代中单独增加。您不需要增加它。

这是遍历矩阵的方式:

n = len(matrix)
for i in range(n):
    for j in range(n):
        print('position ({}, {}) in matrix: {}'.format(i, j, n[i][j]))

因此,要找到最大值的位置,您可以跟踪到目前为止所看到的最大值以及该值的位置,如下所示:

n = len(matrix)
max_value = float('-inf')
max_position = None
for i in range(n):
    for j in range(n):
        value = n[i][j]
        if value > max_value:
            max_value = value
            max_position = (i, j)
print('max value is {} at position ({}, {})'.format(
    max_value,
    max_position[0],
    max_position[1]
))

答案 1 :(得分:0)

您可以尝试执行以下步骤:

  1. 假设矩阵的第一元素是具有最大值的元素,即[0,0]位置的元素紧随其后,将位置存储在两个变量中(例如 row = 0 col = 0 )和 max
  2. 中的值
  3. 现在,像往常一样遍历矩阵,并在每次迭代时检查当前元素(位置[i,j])是否大于存储在 max 中的元素,如果是,则替换带有当前元素vList itemalue的 max 的值以及 row col ,如果没有,则继续下一次迭代。
  4. 返回 col

答案 2 :(得分:0)

import numpy as np

print("enter the dimensions")
m = int(input())
n = int(input())

print("enter the elements of the matrix")
list1 = []

for i in range(m):
    list2 = []
    for j in range(n):
        list2.append(int(input()))
    list1.append(list2)

print(np.asarray(list1))

max_elements = []
for i in range(m):
    list1[i].sort()
    max_element = list1[i][n-1]
    max_elements.append(max_element)

max_elements.sort()
the_max_element = max_elements[m-1]

print(the_max_element)

我使用了对内部列表进行排序然后从中访问最大元素的概念。对这个新生成的列表进行另一种排序以获得最大的元素。 希望以上代码对您有所帮助。使用numpy以多维格式打印列表。

相关问题