python-找出数组中出现次数大于n/2的元素
程序员文章站
2022-05-04 11:44:42
python-找出数组中出现次数大于n/2的元素法一法二法三法四法一利用模块中的Counter方法,直接得到列表中各个元素出现的次数,代码如下:lst=[2,2,3,4,2,2,2,1,3]def get_count1(lst): from collections import Counter # 引入计数器 new_num = Counter(lst) # 以类似于字典形式保存 a=sorted(new_num.items(), key=lambda item:...
法一
利用模块中的Counter方法,直接得到列表中各个元素出现的次数,代码如下:
lst=[2,2,3,4,2,2,2,1,3] def get_count1(lst): from collections import Counter # 引入计数器 new_num = Counter(lst) # 以类似于字典形式保存 a=sorted(new_num.items(), key=lambda item: item[1], reverse=True) ##按出现次数进行排序,以元组的形式返回 if a[0][1]>len(lst)/2: print(a[0][0]) return a[0][0] get_count1(lst)
法二
利用集合的特性去重,再遍历整个数组,统计每个次数出现的次数,代码如下:
lst=[2,2,3,4,2,2,2,1,3] def get_count2(lst): ###法二:利用集合的特性去重,再遍历整个数组,统计每个次数出现的次数 data=set(lst) ###得到数组中所有的元素[1,2,3,4] for d in data: count=0 for i in lst: if i==d: count+=1 ##统计元素出现的次数 if count>len(lst)/2: print(d,"出现次数是",count) break return d return 0 get_count2(lst)
法三
直接利用list.count可以进行统计次数,代码如下:
lst=[2,2,3,4,2,2,2,1,3] def get_count3(lst): for i in lst: if lst.count(i)>len(lst)/2: print(i) break get_count3(lst)
法四
前提是数组中有一个元素出现的次数一定大于n/2次,利用数学的特性,排序之后该元素一定在中间位置,代码如下:
lst=[2,2,3,4,2,2,2,1,3] def get_count4(lst): a=sorted(lst,reverse=True) print(a[len(lst)//2]) get_count4(lst)
本文地址:https://blog.csdn.net/sfakh/article/details/108247042
上一篇: Python邮件自动定时发送(完整版)