【发布时间】:2014-10-23 21:50:00
【问题描述】:
我有一个包含 100 个数字的列表,我正在尝试编写一个函数来确定所有数字是否都是唯一的(它们应该是唯一的)。我的函数是unique(lst),它需要一个列表作为输入,如果我的列表中的所有数字都是唯一的,它应该返回 True。 Oh and False 否则,一个例子:
>>> unique([1, 2, 3])
True
>>> unique([2, 4, 3, 4])
False
到目前为止我写了这个:
def unique(lst):
if len(lst) == 1:
return True
else:
if lst[0] in lst[1:]:
return False
if lst[1] in unique(lst[2:-1]):
return False
else:
return True
我无法递归检查 lst[0] 之后的数字是否唯一。谁能告诉我如何编辑我的代码以便正确检查?
【问题讨论】:
-
unique()返回一个布尔值,所以lst[1] in unique(...)不起作用。为什么递归时忽略最后一项? -
“已关闭主题已关闭”?如果你想删除你的问题,有更好的方法来做到这一点。但总的来说,如果问题是高质量且可回答的,则不应该被删除——StackOverflow 的重点是构建和维护一个通用的、可重用的知识库,其他人可以搜索和学习来自。
-
另请注意,服务条款规定,在 StackOverflow 上发布内容意味着该网站获得了该内容的永久许可。请参阅meta.stackoverflow.com/questions/274757/… 了解有关删除数据的指南的讨论;一般而言,规则是只有在"没有任何持久价值"的情况下才应删除问题。也就是说,这些问题通常是最初不应该在这里提出的问题。 :)
-
你想要这种递归方法有什么原因吗?更清晰、更高效的方法是只循环列表一次并使用
set来跟踪已经看到的值。
标签: python list recursion unique