【发布时间】:2010-11-28 05:57:44
【问题描述】:
我有一个函数 search,它在列表 ('l') 中搜索键,如果找到则返回 True,否则返回 False。如果找到,我希望它返回 key 的索引,如果没有找到,则返回 False,但我对我的 return 语句应该是什么感到困惑。这是我的代码:
def search(l,key):
"""
locates key in list l. if present, returns location as an index;
else returns False.
PRE: l is a list.
POST: l is unchanged; returns i such that l[i] == key; False otherwise.
"""
if l: # checks if list exists
if l[0] == key: # base case - first index is key
return True
s = search(l[1:], key) # recursion
if s is not False:
return s
return False # returns false if key not found
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
应该注意我不能使用内置的.index函数或者in操作符。我想我已经很接近了,虽然没有这些。
-
没有看到这个不能使用索引的评论。但方法可以类似。试试看并在此处发布您的答案
-
请确保你的导师知道(a)当这在一个足够长的列表中爆炸时你仍然通过(b)重递归的课程最好用支持它的语言教授。如果说教练试图让你使用 setter 或 getter,给他/她坚定但不是毁灭性的打击,告诉他们这是来自 aaronasterling。
-
@aaronasterling:+1 我想,这更像是一个介绍性练习,以限制他们使用 python 中可用的工具,并提出尊重这些限制的解决方案。当然,他们也应该告诉他们,为什么这个解决方案不适合/不如 Python 中的其他解决方案。在我发布答案后很久才看到他的评论,并且对此也投了反对票。
-
这不是 Python!使用
for循环而不使用递归遍历列表。