【发布时间】:2014-12-08 21:58:02
【问题描述】:
如果一个字母(字符串)在一个列表中, find_letter(['o', ['hello', 'c', 'bye']), 返回 True,否则返回 False。
def find_letter(lst):
lst=['o','hello', 1]
n='o'
if not lst:
return 0
elif lst[0] == n:
return True
elif find_letter(lst[0:]):
return True
else:
return False
print(find_letter(lst))
它确实返回“True”,但我不确定这是否是正确的方法。也许有更好的方法?在第二个 elif 语句中,如果第一个不包含字母,python 是否会遍历列表中的所有元素?该函数必须是递归的。
【问题讨论】:
-
is python going through all the elements in the list if the first one doesn't contain the letter- 您可以使用print语句来确认您自己:-) -
欢迎使用stackoverflow,你能修复你的缩进吗?
-
list是 python 中的一种类型,因此它是内置的。不要将其用作变量名,否则您将覆盖现有的 python 类型。 -
您的递归函数看起来不错,但其中有一个简单的错误。在
elif find_letter(lst[0:])中,您将相同的列表提供给find_letter函数。您必须跳过第一个元素(零索引元素)并返回其他元素。您必须正确使用列表切片。 -
@FallenAngel 我试过 (lst[1:)] 和 (lst[:-1]),但都没有奏效。
标签: python string list recursion