import math
from functools importreduceclassMyList(list):# 继承list类def__init__(self,*args):super().__init__()# 重写父类的init方法 - 先通过super()调用父类原有的initfor value in args:
self.append(value)# 将值全部传到列表中去
self.check_value()# - 检查输入值中是否有不是整数和小数的值# 检查值defcheck_value(self):for x in self:iftype(x)notin(int,float):raise ValueError('列表中有非整数和小数的值')else:return self
defappend(self, value):iftype(value)notin(int,float):raise ValueError('不能添加非整数和小数的数')else:super().append(value)@propertydefaverage(self):"""求平均"""returnreduce(lambda x, y: x + y, self,0)/len(self)@propertydefvariance(self):"""总体方差"""
avg = self.average
num =reduce(lambda x, y: x + y,[(avg - i)**2for i in self],0)return num /len(self)@propertydefstd(self):"""总体标准差"""return math.sqrt(self.variance)@propertydefmedian(self):"""中位数"""
sorted_list =sorted(self)iflen(self)%2:return sorted_list[len(self)//2]return(sorted_list[len(self)//2]+ sorted_list[len(self)//2-1])/2
myl1 = MyList(1,2,3,4,5)print(MyList(2,4,6,8,10))print(myl1.average)
myl1.append(6)print(myl1)print(myl1.average)print(myl1.variance)print(myl1.std)print(myl1.median)print(myl1)
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"])
bar.add_yaxis("商家A",[5,20,36,10,35,20])
bar.add_yaxis("商家B",[15,21,13,30,55,39])
bar.render('bar.html')
from pyecharts.charts import Pie
from pyecharts import options
x_data =['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
y_data =[335,310,274,235,400]
data_pair =[list(z)for z inzip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1], reverse=True)
pie = Pie(init_opts=options.InitOpts(width='800px', height='400px'))
pie.add(
series_name='引流渠道', data_pair=data_pair,
radius=['40%','60%'], center=['50%','50%'],)
pie.set_series_opts(
label_opts=options.LabelOpts(
formatter='{b}: {c} ({d}%)'))
pie.render('pie.html')