鱼C论坛

 找回密码
 立即注册
查看: 2497|回复: 6

[技术交流] [挑战] 过滤列表中的低频元素 <难度: *>

[复制链接]
发表于 2015-3-21 10:57:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 戴宇轩 于 2015-3-22 11:03 编辑

你将得到一个含有整数(X)的非空列表。在这个任务里,你应该返回在此列表中的非唯一元素的列表。要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表只有一次的元素)。解决这个任务时,不能改变列表的顺序。例如:[1,2,3,1,3] 1和3是非唯一元素,结果将是 [1, 3, 1, 3]。


                               
登录/注册后可看大图


输入: 一个含有整数的列表。

输出: 一个含有不唯一元素的整数列表。

范例:

checkio([1, 2, 3, 1, 3]) == [1, 3, 1, 3]
checkio([1, 2, 3, 4, 5]) == []
checkio([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5]
checkio([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9]
如何使用: 这个任务将帮助您了解如何操作数组,这是解决更复杂的任务的基础。这个概念可以很容易地推广到真实世界的任务。例如你需要通过删除低频的元素(噪声)来使统计数据更清楚。

前提:
0 < |X| < 1000


#########################

我的方法:
游客,如果您要查看本帖隐藏内容请回复
更好的方法:
游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-21 21:29:58 | 显示全部楼层
我的方法:
  1. def checkio(l1):
  2.     outlist = []
  3.     for count in range(len(l1)):
  4.         templist = l1[:count] + l1[(count + 1):]
  5.         if l1[count] in templist:
  6.             outlist.append(l1[count])
  7.     return outlist
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +1 收起 理由
戴宇轩 + 5 + 5 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-21 21:56:27 | 显示全部楼层
本帖最后由 lightninng 于 2015-3-22 12:39 编辑

依然感觉自己没有离开C的笼罩~~
  1. from collections import Counter


  2. def checkio(unsolved_list):
  3.     length = len(unsolved_list)
  4.     i = 0
  5.     while i < length:
  6.         if unsolved_list[i] in [key for (key, value) in (Counter(unsolved_list)).items() if value == 1]:
  7.             unsolved_list.pop(i)
  8.             length -= 1
  9.         i += 1
  10.     return unsolved_list
复制代码



改进一下,每次while循环都要Counter的话似乎会比较慢,另外上面while里面的if少了个else对于[1,2,3,4,5]会得出错误的答案
  1. def checkio(unsolved_list):
  2.     length = len(unsolved_list)
  3.     i = 0
  4.     c = Counter(unsolved_list)
  5.     while i < length:
  6.         if unsolved_list[i] in [key for (key, value) in c.items() if value == 1]:
  7.             unsolved_list.pop(i)
  8.             length -= 1
  9.         else:
  10.             i += 1
  11.     return unsolved_list
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +1 收起 理由
戴宇轩 + 5 + 5 + 1 据说学C的人写出来的代码质量高

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-21 20:28:28 | 显示全部楼层
多谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-22 10:17:23 | 显示全部楼层
建议楼主将这种问题类的换一个专辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-22 10:46:14 | 显示全部楼层
lightninng 发表于 2015-3-22 10:17
建议楼主将这种问题类的换一个专辑

支持, 这样就不显得混乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-22 14:05:15 | 显示全部楼层
来学习啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 11:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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