python_众数

文章目录

  • 不加载模块的方法
    • 方法1:索引方法
      • v1.1
      • v1.2
      • v1.3
    • 方法2:转化成{元素:个数}的字典
      • v2.1
      • v2.2

不加载模块的方法

方法1:索引方法

v1.1

# 定义计算众数的函数get_mode(),参数为待分析列表型数据input_list,返回众数
def get_mode(input_list):
    # 获取各个元素重复次数(只计算当前元素之后的次数)
    input_list_repeattimes=[]
    for index,i in enumerate(input_list):
        counts=0
        for j in input_list[index:]:
            if j==i:
                counts+=1
        input_list_repeattimes.append(counts)
    # 获取最大的次数
    largestcount=0
    for index,i in enumerate(input_list_repeattimes):
        if i>largestcount:
            largestcount=i
    #获取最大的次数的位置
    largestindex=[]
    for index,i in enumerate(input_list_repeattimes):
        if i==largestcount:
            largestindex.append(index)
    #获取mode
    mode=[]
    for i in largestindex:
        mode.append(input_list[i])
    #根据情况返回mode值
    if largestcount==1:
        return "No mode exist"
    else:
        return mode    

# 测试:调用get_mode函数,计算众数
input_list=[100,98,87,65,82,99,92,99,100]
print(get_mode(input_list))
input_list2=[1,2,3,4,5]
print(get_mode(input_list2))

v1.2

# 定义计算众数的函数get_mode(),参数为待分析列表型数据input_list,返回众数
def get_mode(input_list):
    # 获取各个元素重复次数(只计算当前元素之后的次数)
    input_list_repeattimes=[]
    for index,i in enumerate(input_list):
        counts=0
        for j in input_list[index:]:
            if j==i:
                counts+=1
        input_list_repeattimes.append(counts)
    #同时获得最大次数和最大位置
    largestcount=0
    largestindex=[]
    for index,i in enumerate(input_list_repeattimes):
        if i>largestcount:
            largestcount=i
            largestindex=[]
            largestindex.append(index)
        elif i==largestcount:
            largestindex.append(index)
    #获取mode
    mode=[]
    for i in largestindex:
        mode.append(input_list[i])
    #根据情况返回mode值
    if largestcount==1:
        return "No mode exist"
    else:
        return mode 
# 测试:调用get_mode函数,计算众数
input_list=[100,98,87,65,82,99,92,99,100]
print(get_mode(input_list))
input_list2=[1,2,3,4,5]
print(get_mode(input_list2))

v1.3

# 定义计算众数的函数get_mode(),参数为待分析列表型数据input_list,返回众数
def get_mode(input_list):
    # 按顺序获取各个元素重复次数列表
    input_list_repeattimes=[]
    largestcount=0
    for i in input_list:
        count=input_list.count(i) #计数函数
        input_list_repeattimes.append(count)
        if count > largestcount:
            largestcount=count
        
    #获取mode
    mode=[]
    for index,i in enumerate(input_list_repeattimes):
        if i==largestcount:
            mode.append(input_list[index])
    mode=set(mode) #去除重复的函数
    
    #根据情况返回mode值
    if largestcount==1:
        return "No mode exist"
    else:
        return mode 
# 测试
input_list=[100,98,87,65,82,99,92,99,100]
print(get_mode(input_list))
input_list2=[1,2,3,4,5]
print(get_mode(input_list2))

方法2:转化成{元素:个数}的字典

v2.1

# 定义计算众数的函数get_mode(),参数为待分析列表型数据input_list,返回众数
def get_mode(input_list):
    # 将列表转化为列表元素为键(key),计数为值(value)的字典
    dict1={
     }
    for i in input_list:
        if i not in dict1.keys():
            dict1[i]=1
        else:
            dict1[i]+=1
    # 遍历字典的值,也就是原列表的计数,获取最大的计数以及相对应的键
    largestcount=0
    mode=[]
    for i in dict1.keys():
        value=dict1[i]
        if value >largestcount:
            largestcount=value
            mode=[]
            mode.append(i)
        elif value==largestcount:
            mode.append(i)
    # 根据情况返回mode值
    if largestcount==1:
        return "No mode exist"
    else:
        return mode

# 测试:调用get_mode函数,计算众数
input_list=[100,98,87,65,82,99,92,99,100]
print(get_mode(input_list))
input_list2=[1,2,3,4,5]
print(get_mode(input_list2))

v2.2

可以用 for key, value in dict1.items() 来直接遍历键和值:

# 定义计算众数的函数get_mode(),参数为待分析列表型数据input_list,返回众数
def get_mode(input_list):
    # 将列表转化为列表元素为键(key),计数为值(value)的字典
    dict1={
     }
    for i in input_list:
        if i not in dict1.keys():
            dict1[i]=1
        else:
            dict1[i]+=1
    # 遍历字典的值,也就是原列表的计数,获取最大的计数以及相对应的键
    largestcount=0
    mode=[]
    for key,value in dict1.items():
        if value >largestcount:
            largestcount=value
            mode=[]
            mode.append(key)
        elif value==largestcount:
            mode.append(key)
    # 根据情况返回mode值
    if largestcount==1:
        return "No mode exist"
    else:
        return mode

# 调用get_mode函数,计算众数
input_list=[100,98,87,65,82,99,92,99,100]
print(get_mode(input_list))
input_list2=[1,2,3,4,5]
print(get_mode(input_list2))

From B

你可能感兴趣的:(统计学,python,python,统计学)