Python|在二维列表中查找最常见的元素
给定一个二维列表(长度可能相同,也可能不同),编写一个Python程序来查找给定二维列表中最常见的元素。
例子:
Input : [[10, 20, 30], [20, 50, 10], [30, 50, 10]]
Output : 10
Input : [['geeks', 'wins'], ['techie', 'wins']]
Output : wins
方法 #1:使用max()
函数
第一种 Pythonic 方法是使用Python的max()方法。我们首先展平二维列表,然后简单地应用 max() 方法来找出所有元素中出现的最大元素。
# Python3 program to find most
# common element in a 2D list
def mostCommon(lst):
flatList = [el for sublist in lst for el in sublist]
return max(flatList, key = flatList.count)
# Driver code
lst = [[10, 20, 30], [20, 50, 10], [30, 50, 10]]
print(mostCommon(lst))
输出:
10
还有另一种扁平化列表的方法,即chain.from_iterable()
,它产生了另一种方法。
# Python3 program to find most
# common element in a 2D list
from itertools import chain
def mostCommon(lst):
flatList = list(chain.from_iterable(lst))
return max(flatList, key=flatList.count)
# Driver code
lst = [[10, 20, 30], [20, 50, 10], [30, 50, 10]]
print(mostCommon(lst))
输出:
10
方法#2:使用集合模块中的most_common()
most_common()用于生成 n 个最常遇到的输入值的序列。因此,我们简单地展平列表并使用上述方法找到最常见的元素。
# Python3 program to find most
# common element in a 2D list
from itertools import chain
from collections import Counter
def mostCommon(lst):
flatList = chain.from_iterable(lst)
return Counter(flatList).most_common(1)[0][0]
# Driver code
lst = [[10, 20, 30], [20, 50, 10], [30, 50, 10]]
print(mostCommon(lst))
输出:
10