📅  最后修改于: 2023-12-03 15:24:37.246000             🧑  作者: Mango
在Python中,要在列表中搜索元素,你可以使用以下方法:
线性搜索是最简单的搜索方法。它从列表的第一个元素开始,逐一比较每个元素,直到找到目标元素或搜索到列表的末尾。
def linear_search(lst, item):
for i in range(len(lst)):
if lst[i] == item:
return i
return -1
代码的时间复杂度为O(n),其中n是列表的长度。 线性搜索对于小型列表而言是可以接受的,但对于大型列表,它会花费较长的时间。
二分搜索也称为折半搜索,它是一种快速搜索算法。该算法将已排序列表的中间元素与搜索项进行比较。如果相等,则返回该元素的位置。如果搜索项小于中间元素,则在列表左侧进行递归搜索。否则,在列表右侧进行递归搜索。
然后,将递归应用于左侧或右侧的子集,直到找到匹配项或确定不存在该项。
def binary_search(lst, item):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high) // 2
if lst[mid] == item:
return mid
elif lst[mid] < item:
low = mid + 1
else:
high = mid - 1
return -1
代码的时间复杂度为O(log n),其中n是列表的长度。 二分搜索的效率更高,但列表必须是有序的。
如果列表较小且无序,可以使用in运算符简单地检查元素是否在列表中。
if item in lst:
print("Found")
else:
print("Not Found")
in操作符的时间复杂度为O(n)。
我们还可以使用列表解析式来搜索特定的元素。
my_list = [1, 4, 5, 6, 9]
filtered_list = [x for x in my_list if x == 5]
这个方法是使用Python列表解析式来迭代列表,同时检查特定元素。
Python Algorithms & Data Structures - Benjamin Baka