g-var.com | G-VAR's Blog

CheckIO 1 | Non Unique Element

Tue Aug 9, 2016

最近在学习Python,听说了一个叫CheckIO的网站(需要翻墙),是通过游戏的方式以Python来解答各种问题,正好可以通过该网站的任务来加深对Python的理解,希望以后能有时间每天做一两道题,在此记录的是不是我的答案,只记录一下比较经典的答案,基于Python 2.7


转载请注明出处!

原文链接:CheckIO 1 | Non Unique Element


任务:

你将得到一个含有整数(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

答案:

def checkio(data):

    return [i for i in data if data.count(i) > 1]

注:其实任务中有个前提条件是0 < |x| < 1000,但是我发现任务中的测试并没有考虑这个前提条件,加上反倒测试不通过了。

其它答案:

checkio=lambda d:[x for x in d if d.count(x)>1]

[ 转载必须在正文中标注并保留原文链接等信息。]



  « Previous: Next: »