Python|列表中频率最高的元素
这是程序员经常遇到的最基本的操作之一。无论是开发还是竞争性编程,掌握此实用程序都非常重要,因为它有助于执行许多涉及此任务作为其子任务的任务。让我们讨论实现此操作的各种方法。
方法#1:朴素的方法
作为蛮力方法,我们只计算所有元素,然后返回元素整体计数,最后保持最大值。这是遇到此问题时可以考虑执行的基本方法。
# Python3 code to demonstrate
# to get most frequent element
# using naive method
# initializing list
test_list = [9, 4, 5, 4, 4, 5, 9, 5, 4]
# printing original list
print ("Original list : " + str(test_list))
# using naive method to
# get most frequent element
max = 0
res = test_list[0]
for i in test_list:
freq = test_list.count(i)
if freq > max:
max = freq
res = i
# printing result
print ("Most frequent number is : " + str(res))
输出 :
Original list : [9, 4, 5, 4, 4, 5, 9, 5, 4]
Most frequent number is : 4
方法 #2:使用max() + set()
将列表转换为集合并针对列表中每个数字的计数最大化函数,这个任务可以轻松完成,也是最优雅的实现方式。
# Python3 code to demonstrate
# to get most frequent element
# using max() + set()
# initializing list
test_list = [9, 4, 5, 4, 4, 5, 9, 5, 4]
# printing original list
print ("Original list : " + str(test_list))
# using max() + set() to
# get most frequent element
res = max(set(test_list), key = test_list.count)
# printing result
print ("Most frequent number is : " + str(res))
输出 :
Original list : [9, 4, 5, 4, 4, 5, 9, 5, 4]
Most frequent number is : 4
方法#3:使用statistics.mode()
模式表示数学中的最大频率元素, Python将整个库用于统计函数,这也可用于实现此任务。
# Python3 code to demonstrate
# to get most frequent element
# using statistics.mode()
import statistics
# initializing list
test_list = [9, 4, 5, 4, 4, 5, 9, 5, 4]
# printing original list
print ("Original list : " + str(test_list))
# using statistics.mode() to
# get most frequent element
res = statistics.mode(test_list)
# printing result
print ("Most frequent number is : " + str(res))
输出 :
Original list : [9, 4, 5, 4, 4, 5, 9, 5, 4]
Most frequent number is : 4
方法 #4:使用collections.Counter.most_common()
实现这一特定任务的鲜为人知的方法, Counter()
使用 most_common函数在一行中实现这一目标。这是实现这一目标的创新和不同的方式。
# Python3 code to demonstrate
# to get most frequent element
# using collections.Counter.most_common()
from collections import Counter
# initializing list
test_list = [9, 4, 5, 4, 4, 5, 9, 5, 4]
# printing original list
print ("Original list : " + str(test_list))
# using most_common to
# get most frequent element
test_list = Counter(test_list)
res = test_list.most_common(1)[0][0]
# printing result
print ("Most frequent number is : " + str(res))
输出 :
Original list : [9, 4, 5, 4, 4, 5, 9, 5, 4]
Most frequent number is : 4