Python :不使用任何函数的排序列表的最频繁元素(模式)
Python : most frequent element (mode) of sorted list without use any fonction
我逛了很多论坛都没有找到我的解决方案,因为大多数都至少使用了一个前置函数。
我必须return排序列表的统计模式。警告,因为我不能使用任何函数,例如:Max、Count、key、set。
我的函数在 o(n)
我用我自己的功能试试 :
def mode_liste (lis_resultat):
"""lis_resultat: sorted list"""
d=0
e=0
for i in range (len(lis_resultat)-1,1,-1):
if (lis_resultat[i]==lis_resultat[i-1]):
e+=1
else:
if (d<=e):
res=lis_resultat[i-1]
d=e
e=0
return res
但是这个函数不适用于少于 2 个项目的列表,我知道这不是好的解决方案
我的解决方案是 lis 作为操作的列表:
counter = 0
my_max = 0
max_index = 0
if len(lis) == 1:
my_max = 1
max_index = 0
else:
for i in range(1,len(lis)):
if lis[i] == lis[i-1]:
counter += 1
else:
counter = 1
if counter > my_max:
my_max = counter
max_index = i
print(f"occurences: {my_max},mode: {lis[max_index]}")
我逛了很多论坛都没有找到我的解决方案,因为大多数都至少使用了一个前置函数。
我必须return排序列表的统计模式。警告,因为我不能使用任何函数,例如:Max、Count、key、set。
我的函数在 o(n)
我用我自己的功能试试 :
def mode_liste (lis_resultat):
"""lis_resultat: sorted list"""
d=0
e=0
for i in range (len(lis_resultat)-1,1,-1):
if (lis_resultat[i]==lis_resultat[i-1]):
e+=1
else:
if (d<=e):
res=lis_resultat[i-1]
d=e
e=0
return res
但是这个函数不适用于少于 2 个项目的列表,我知道这不是好的解决方案
我的解决方案是 lis 作为操作的列表:
counter = 0
my_max = 0
max_index = 0
if len(lis) == 1:
my_max = 1
max_index = 0
else:
for i in range(1,len(lis)):
if lis[i] == lis[i-1]:
counter += 1
else:
counter = 1
if counter > my_max:
my_max = counter
max_index = i
print(f"occurences: {my_max},mode: {lis[max_index]}")