要在数字矩阵中找到最大值,我们可以编写5行代码来解决该问题:
ans = matrix[0][0] for x in range(len(matrix)): for y in range(len(matrix[0])): ans = max(ans, matrix[x][y]) return ans
有没有针对此问题的一线解决方案?我想到的那个实际上很尴尬:
return max(max(matrix, key=max))
要么
return max(map(max, matrix))
您可以使用生成器表达式在矩阵中找到最大值。这样,您可以避免在内存中构建矩阵元素的完整列表。
maximum = max(max(row) for row in matrix)
而不是此处先前答案中给出的列表理解
maximum = max([max(row) for row in matrix])
这来自PEP(原理部分):
…许多用例不需要在内存中创建完整列表。相反, 它们只需要一次遍历一个元素。 … 生成器表达式对于诸如sum(),min()和max()之类的函数特别有用,这些函数将可迭代的输入减少为单个值 … 当与诸如sum(),min()和 max()的 归约函数结合使用时,生成器表达式的实用性将大大增强。
…许多用例不需要在内存中创建完整列表。相反, 它们只需要一次遍历一个元素。
…
生成器表达式对于诸如sum(),min()和max()之类的函数特别有用,这些函数将可迭代的输入减少为单个值
当与诸如sum(),min()和 max()的 归约函数结合使用时,生成器表达式的实用性将大大增强。