鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 189

[复制链接]
发表于 2018-7-26 11:23:14 | 显示全部楼层
  1. def fun1(list1=[0]):
  2.     sum1=0
  3.     list2=[]
  4.     list4=[]
  5.     for i in list1:
  6.         sum1+=i
  7.     average=round(sum1/len(list1),5)
  8.     print(average)
  9.     for i in list1:      
  10.         list2.append(abs(i-average))
  11.     list3=zip(list1,list2)
  12.     for j in list3:
  13.         if j[1]==min(list2):
  14.             list4.append(j[0])
  15.         else:
  16.             continue
  17.     return tuple(list4)

  18. print(fun1([0,2,-1.4]))
  19. print(fun1([2,4,6,8]))
  20. print(fun1([-2, 0, 0.3, 2.3]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 11:25:15 | 显示全部楼层
关于误差修正部分,如果有好的方法,希望可以回复分享一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 13:39:30 | 显示全部楼层
塔利班 发表于 2018-7-22 13:32
小数部分解决有点没头绪,感觉代码可能会写的多,看大神的吧

能解释一下代码吗。感觉有点蒙呐
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 16:10:11 | 显示全部楼层
  1. def a189(*nums):
  2.         average=sum(nums)/len(nums)
  3.         average=float(('%.2f' % average))
  4.         a=max(nums)
  5.         result=[]
  6.         for i in nums:
  7.                 if abs(i-average)<a:
  8.                         result=[i]
  9.                         a=abs(i-average)
  10.                 elif abs(i-average)==a and i not in result:               
  11.                         result.append(i)
  12.         print(tuple(result))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 18:46:38 | 显示全部楼层
ErTian 发表于 2018-7-26 13:39
能解释一下代码吗。感觉有点蒙呐
  1. def fun189(x):
  2.     y=list(x)
  3.     g=lambda a:abs(a-sum(x)/len(x))
  4.     y.sort(key=g)
  5.     return tuple(set([z for z in y if g(z)==g(y[0])]))
复制代码

第一行生成可迭代对象x的list版y
第二行定义lambda表达式,用于排序(这里是按每个元素和均值差的绝对值)
第三行将列表y排序,即按离均值最近的排序
第四行返回题目要求的元祖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 11:32:51 | 显示全部楼层
  1. def test189(list1):
  2.     aa = {i: round(abs(i - sum(list1) / len(list1)), 8) for i in list1}
  3.     print(tuple(set(i for i in aa if aa[i] == min(aa.values()))))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-3 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表