我如何使用python3在2D矩阵中找到最高的偶数和奇数

时间:2018-12-05 23:23:43

标签: python-3.x

我如何使用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]

1 个答案:

答案 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])