python众数,平均数,中位数实现代码(包括字典的使用)

python众数,平均数,中位数实现代码(包括字典的使用),第1张

概述不使用numpy,用python实现判断一个列表中众数中位数平均数题目:统计学家想要用一组函数巨酸一列数字的中位数和众数,中位数是将一个列表排序后出现在中间位置的数。众数是在列表中出现最频繁的数。在一个模块中定义这些函数。还要包含一个名为mean的函数,它计算一组数字的平 @H_419_4@不使用numpy,用python实现判断一个列表中众数中位数和平均数

@H_419_4@题目:
统计学家想要用一组函数巨酸一列数字的中位数和众数,中位数是将一个列表排序后出现在中间位置的数。众数是在列表中出现最频繁的数。在一个模块中定义这些函数。还要包含一个名为mean的函数,它计算一组数字的平均数。每个函数都接受数字的一个列表作为参数,并且返回一个单个的数字。

@H_419_4@思路:
定义一个类,然后分别写一个排序函数,计算平均数的函数,计算中位数的函数,计算众数的函数。

@H_419_4@排序:
用冒泡排序;

    def sorting(self, List=[]):        for i in range(len(List)):            for j in range(len(List) - 1 - i):                if List[j] > List[j + 1]:                    List[j], List[j + 1] = List[j + 1], List[j]        return List
@H_419_4@中位数:
当列表传入后初始化执行,排序函数,得到一个从小到大排序的列表,因此中位数是label处于中间的数值。列表的长度始终为整数,需要考虑奇偶的特性。

    def median(self,List = []):        n = len(List)        if (n% 2) == 0:            local = int(n/2)            # 除法后数据类型为float        else:            local = int((n+1)/2)        return List[local]
@H_419_4@平均数:
就列表全部加和,除以列表的长度

    def mean(self,List = []):        sum = 0        for i in range(len(List)):            sum += List[i]        means = sum/len(List)        return means
@H_419_4@众数:
不使用numpy的API实现找众数。
主要的思路是遍历列表中的元素,查每一个元素的出现次数,创造一个字典,字典内容分别是元素和元素对应出现的次数。
使用max函数查找value中最大的值。
但是可能列表中存在两个元素出现次数相同且都为最大的情况,这种情况下应该将几个元素都筛选出来,而直接使用max函数和对应的key-value查找只能查找出其中遍历过程中最先出现的内容。因此遍历字典找到每一个出现次数最多的元素。

    def mode(self,Lists = []):        dic = {}        k = 1        for i in range(len(Lists)):            for j in range(len(Lists)):                if Lists[j] == Lists[j-1]:                    k += 1                else:                    dic[Lists[j-1]] = k                    k = 1        value = max(dic.values())        max_List = []        for m, n in dic.items():  # 遍历字典一遍找对应的 key 值            print(m,n)            if n == value:                max_List.append(m)        return value,max_List
@H_419_4@全部代码

class Cal@R_301_6603@te(object):    def __init__(self,Lists = []):        self.sorting(Lists)    def sorting(self, List=[]):        for i in range(len(List)):            for j in range(len(List) - 1 - i):                if List[j] > List[j + 1]:                    List[j], List[j + 1] = List[j + 1], List[j]        return List    nums = 0    def median(self,List = []):        n = len(List)        if (n% 2) == 0:            local = int(n/2)        else:            local = int((n+1)/2)        return List[local]    def mean(self,List = []):        sum = 0        for i in range(len(List)):            sum += List[i]        means = sum/len(List)        return means    def mode(self,Lists = []):        dic = {}        k = 1        for i in range(len(Lists)):            for j in range(len(Lists)):                if Lists[j] == Lists[j-1]:                    k += 1                else:                    dic[Lists[j-1]] = k                    k = 1        print(dic)        value = max(dic.values())        max_List = []        for m, n in dic.items():  # 遍历字典一遍找对应的 key 值            print(m,n)            if n == value:                max_List.append(m)        return value,max_List
@H_419_4@测试代码1:

s = Cal@R_301_6603@te()Lists = [0,1,2,5,6,9,7,8,6,3,1,1,4,2,2,7,8,9,5,6,8,6,4,9,9,9,9,9,6,6,6]new_List = s.sorting(Lists)print(new_List)means = s.mean(Lists)print(means)medians = s.median(Lists)print(medians)modes = s.mode(Lists)print(modes)
@H_419_4@结果1:

[0, 1, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9]5.5806451612903236(7, [9, 6])
@H_419_4@测试代码2:

s = Cal@R_301_6603@te()Lists = [1,5,6,8,8,8,7,7,7,9,9,9,4,4,0,0,5,5,4]new_List = s.sorting(Lists)print(new_List)means = s.mean(Lists)print(means)medians = s.median(Lists)print(medians)modes = s.mode(Lists)print(modes)
@H_419_4@结果2:

[0, 0, 1, 4, 4, 4, 5, 5, 5, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9]5.5789473684210527(3, [9, 4, 5, 7, 8])
总结

以上是内存溢出为你收集整理的python众数,平均数,中位数实现代码(包括字典的使用)全部内容,希望文章能够帮你解决python众数,平均数,中位数实现代码(包括字典的使用)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1187749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存