有人能帮我吗?我试图得到这个矩阵的每一行和每一列的最小值

matrix =[[12,34,28,16],
        [13,32,36,12],
        [15,32,32,14],
        [11,33,36,10]]

例如:我希望我的程序打印出12是第1行的最小值,以此类推。

最佳答案

让我们重复任务语句:“获取矩阵中每行和每列的最小值”。
好的,所以,如果矩阵有n行,您应该得到n最小值,每行一个听起来很有趣,不是吗所以,代码如下所示:

result1 = [<something> for row in matrix]

好吧,你需要对每一排做什么对,找到最小值,这非常简单:
result1 = [min(row) for row in matrix]

作为result,您将得到一个n值的列表,正如预期的那样。
等等,现在我们只找到了每一行的最小值,但没有找到每一列的最小值,所以让我们也这样做吧!
考虑到您使用的是Python3.x,您可以做一些非常了不起的事情例如,可以轻松地在列上循环:
result2 = [min(column) for column in zip(*matrix)] # notice the asterisk!

zip(*matrix)中的星号使matrix的每一行成为zip的单独参数,如下所示:
zip(matrix[0], matrix[1], matrix[2], matrix[3])

这看起来不太可读,取决于matrix中的行数(基本上,您必须硬编码它们),星号让您可以编写更干净的代码。
zip返回元组,而第i元组包含所有行的第i个值,因此这些元组实际上是给定矩阵的列。
现在,您可能会发现这段代码有点难看,您可能希望以更简洁的方式编写相同的代码。当然,您可以使用一些函数式编程魔术:
result1 = list(map(min, matrix))
result2 = list(map(min, zip(*matrix)))

这两种方法是完全等价的。

关于python - 矩阵的每一行和每一列中的最小值-Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42610617/

10-11 10:28