python - 跨python矩阵的行和列获取最大值

标签 python algorithm matrix data-structures max

考虑问题:

The grid is:
[ [3, 0, 8, 4], 
  [2, 4, 5, 7],
  [9, 2, 6, 3],
  [0, 3, 1, 0] ]

The max viewed from top (i.e. max across columns) is: [9, 4, 8, 7]
The max viewed from left (i.e. max across rows) is: [8, 7, 9, 3]

我知道如何在 Python 中定义网格:

maximums = [[0 for x in range(len(grid[0]))] for x in range(len(grid))]

获得跨行最大值看起来很容易:

max_top = [max(x) for x in grid]

但是如何获得最大的跨列数呢?

此外,我需要找到一种在线性空间 O(M+N) 中执行此操作的方法,其中 MxN 是矩阵的大小。

最佳答案

使用zip:

result = [max(i) for i in zip(*grid)]

在 Python 中,* 不是指针,而是用于解包传递给对象参数的结构或指定对象可以接收可变数量的项。例如:

def f(*args):
  print(args)

f(434, 424, "val", 233, "another val")

输出:

(434, 424, 'val', 233, 'another val')

或者,给定一个可迭代对象,每个项目都可以插入到其相应的函数参数处:

def f(*args):
  print(args)

f(*["val", "val3", 23, 23])
>>>('val', 'val3', 23, 23)

zip“转置”数据列表,即每一行变成一列,反之亦然。

关于python - 跨python矩阵的行和列获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518496/

相关文章:

java - 优化算法java

python - 矩阵中列的排列

python - 刮过无限滚动条

c# - 词匹配算法

java - 在我的寻路区域周围设置边界是否可以接受?

algorithm - 有什么算法可以找到双麻烦数吗?

python - 为什么使用外部函数传递和更改类自变量可以操作可迭代对象,但不能操作变量?

python - 将使用 pandas group by 计算的总和应用于组的所有元素

python : Comparing values between rows and columns

matrix - 如何编写Rust宏以将行优先顺序转换为列优先顺序?