python众数,平均数,中位数实现代码(包括字典的使⽤)
不使⽤numpy,⽤python实现判断⼀个列表中众数中位数和平均数
丹麦馆题⽬:
统计学家想要⽤⼀组函数巨酸⼀列数字的中位数和众数,中位数是将⼀个列表排序后出现在中间位置的数。众数是在列表中出现最频繁的数。在⼀个模块中定义这些函数。还要包含⼀个名为mean的函数,它计算⼀组数字的平均数。每个函数都接受数字的⼀个列表作为参数,并且返回⼀个单个的数字。
思路:
定义⼀个类,然后分别写⼀个排序函数,计算平均数的函数,计算中位数的函数,计算众数的函数。
排序:
⽤冒泡排序;
def sorting(lf,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
中位数:
当列表传⼊后初始化执⾏,排序函数,得到⼀个从⼩到⼤排序的列表,因此中位数是label处于中间的数值。列表的长度始终为整数,需要考虑奇偶的特性。
def median(lf,list=[]):
n =len(list)
if(n%2)==0:
local =int(n/2)
sinister# 除法后数据类型为float
el:
local =int((n+1)/2)
return list[local]
平均数:
addle就列表全部加和,除以列表的长度
def mean(lf,list=[]):
sum=0
for i in range(len(list)):
sum+=list[i]
means =sum/len(list)
return means
众数:
不使⽤numpy的api实现找众数。
圣诞老人 英语主要的思路是遍历列表中的元素,查每⼀个元素的出现次数,创造⼀个字典,字典内容分别是元素和元素对应出现的次数。
使⽤max函数查找value中最⼤的值。
但是可能列表中存在两个元素出现次数相同且都为最⼤的情况,这种情况下应该将⼏个元素都筛选出来,⽽直接使⽤max函数和对应的key-value查找只能查找出其中遍历过程中最先出现的内容。因此遍历字典找到每⼀个出现次数最多的元素。
legend
def mode(lf,lists =[]):
dic ={}
k =1
for i in range(len(lists)):
puppy love什么意思for j in range(len(lists)):
if lists[j]== lists[j-1]:
k +=1
el:
themesdic[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
全部代码
class Calculate(object):
def__init__(lf,lists =[]):
lf.sorting(lists)
def sorting(lf,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(lf,list=[]):
n =len(list)
if(n%2)==0:
local =int(n/2)
el:
local =int((n+1)/2)
return list[local]
def mean(lf,list=[]):
sum=0
for i in range(len(list)):
sum+=list[i]
means =sum/len(list)
return means
def mode(lf,lists =[]):
dic ={}
k =1
for i in range(len(lists)):
for j in range(len(lists)):
if lists[j]== lists[j-1]:
k +=1
el:
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
测试代码1:
s = Calculate()
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)
结果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.580645161290323
6
(7,[9,6])
测试代码2:
s = Calculate()
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)
结果2:
strict
[0,0,1,4,4,4,5,5,5,6,7,7,7,8,8,8,9,9,9]
5.578947368421052
7
(3,[9,4,5,7,8])