线性反向搜索python
Posted
技术标签:
【中文标题】线性反向搜索python【英文标题】:Linear reverse search python 【发布时间】:2020-12-03 14:13:00 【问题描述】:如何重写下面的函数从列表末尾开始搜索?
def search(list,n):
for i in range(len(list)):
if list[i] == n:
return True
return False
【问题讨论】:
你为什么不用list.reverse()
@Evorage 我必须在哪里使用它?
0 不在列表中,您希望找到什么?
@Sayse 这显然必须返回 False。您可以将 0 替换为列表中的任何数字,但它仍然无法执行我想要的操作。
这实际上是如你所愿。列表本身没有反转。 reversed
函数允许您以相反的顺序迭代范围。
【参考方案1】:
您可以向后遍历列表。为此,您需要使用三个参数指定您的范围。第一个是起点,第二个是终点,第三个是增量。这比在运行时反转它要好。试试这个:
def search(list, n):
for i in range(len(list)-1, 0, -1):
print(list)
if list[i]=n:
return True
return False
【讨论】:
【参考方案2】:使用list.reverse()
反转您的列表,以便您从头开始:
list= [1,2,3,4,5,6,7,8,9]
n=(3)
list.reverse()
def search(list,n):
for i in reversed(range(len(list))):
print(list)
if list[i] == n:
return True
return False
search(list,n)
【讨论】:
感谢您的回答,但我想在函数内部执行此操作。这些列表和 n 变量只是一个示例,用于显示我在运行函数时得到的结果。 为什么函数内部需要它?当你定义你的列表时,它不是在你的功能之外吗?只需在定义后立即反转它。 我希望这个功能适用于任何列表,而不是这个特定的列表。当我使用列表作为参数时,我希望它在函数内部反转,所以我不会反转我创建的每个列表。 然后只需在您想要的任何列表上使用:nameofyourlist.reverse(),并将其移动到函数内以上是关于线性反向搜索python的主要内容,如果未能解决你的问题,请参考以下文章