【发布时间】:2018-03-27 07:24:49
【问题描述】:
假设我们有一个列表:x = [5, 5, 2, 5, 5, 3, 3, 4, 4]。如何返回此列表中仅出现一次的数字,即 2?
在尝试解决 Codewars 上的 "Find the odd int" 问题时提出了这个问题。最初我没有正确理解这个任务,但可以更容易地解决它,所以在解决之前仔细阅读它:)
最后使用下面的代码来解决它(它不是完整的解决方案,而是它的一部分,在从输入创建字典后使用):
return [int(k) for k,v in d.items() if v%2==1][0]
【问题讨论】:
-
@the.salman.a:不是真的——那是因为你已经知道要计算哪个项目了。正如最佳答案所述,如果您计算列表中的所有项目,性能会变得很糟糕。
-
到目前为止,您尝试过什么来解决您的问题。堆栈溢出不是免费的编码服务。你也必须表现出你的努力。
-
@TimPietzcker:使用正确的方法,可以在 O(N) 时间内轻松计算列表中的所有项目。
-
这只是另一个任务的一部分。我试过了,但找不到同样的问题。
-
@VikasDamodar,我不知道 Counter 集合,并尝试使用标准 for 循环和 if...else 程序来解决这个问题