我如何使用python3中的简单代码做到这一点
matrix = [[98, 19, 1, 46, 51, 33, 3, 33, 80, 40], [26, 88, 79, 10, 63, 76, 18, 49, 47, 44], [18, 53, 8, 96, 40, 53, 73, 8, 31, 43], [8, 40, 31, 98, 19, 39, 15, 9, 58, 32], [76, 45, 1, 5, 15, 14, 20, 88, 51, 48]
答案 0 :(得分:0)
您可以通过itertools.chain.from_iterable
整理列表,然后使用%==0
表示偶数,%!=0
表示奇数来获得最大的偶数和奇数:
import itertools
flat = list(itertools.chain.from_iterable(matrix))
even_max = max(i for i in flat if i%2==0)
odd_max = max(i for i in flat if i%2!=0)
>>> even_max
98
>>> odd_max
79
如果您不想使用itertools
,则可以通过列表理解来使2D矩阵变平:
flat = [v for i in matrix for v in i]
even_max = max(i for i in flat if i%2==0)
odd_max = max(i for i in flat if i%2!=0)
使用numpy
的更多选项(可能对矩阵造成过大杀伤力,但如果矩阵很大,可能会有所帮助):
import numpy as np
m = np.array(matrix)
even_max = max(m[m%2==0])
odd_max = max(m[m%2!=0])