def findList(lst, ele):
if not lst: # base case: the list is empty
return False
elif lst[0] == ele: # check if current element is the one we're looking
return True
elif not isinstance(lst[0], list): # if current element is not a list
return findList(lst[1:], ele)
else: # if current element is a list
return findList(lst[0], ele) or findList(lst[1:], ele)
这不是用Python做事情的方法,但是-您可以递归地遍历列表:
你有两个基本情况:
1)您已到达列表的末尾=>;返回false。
2)当前元素是您要查找的元素=>;返回true(或元素或其位置,无论您感兴趣的是什么)。
您必须一直做的事情是检查当前元素上的两个基本情况,并在列表中的下一个元素上递归地应用该函数(如果没有应用任何一个基本情况)。
递归函数是当你有一个链表时惯用的方法。Python列表更像数组。但是仍然可以用递归函数处理Python列表——虽然没有真正的实用程序,但是作为一个练习,它可能会很有趣。
从一个完整的列表开始,基本情况是当列表为空时。遍历列表,方法是将列表作为参数传入,使用
x.pop()
同时获取和移除列表中的第一个项,计算弹出的项,然后将列表(现在更短)传递到同一个函数中。编辑:事实上,仔细想想,最好不要使用x.pop(),而是先查看第一个值,然后将剩余的部分传递到一个切片中。这将非常低效,因为每次切片时都要复制列表,但这比在递归函数中破坏性地使用列表要好,除非这是所需的副作用。
相关问题 更多 >
编程相关推荐