法一
利用模块中的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)