为什么 linear_search 函数不能正常工作?

Why linear_search function do not work correctly?

为什么此代码仅在 target==theFirstElement 时有效?它 return None 即使 target==5 或列表中的任何其他元素。

def linear_search(lista, target):
    for i in range(8):
        if lista[i]==target:
            return i
        return None

def verify(index):
    if index is not None:
        print("Target found at index:", index)
    else:
        print ("Target not found in list")

numbers =[1,2,3,4,5,6,7,8]

result=linear_search(numbers, 4)

verify(result)

您的代码有一个错误:您应该 return None 只有在 for 循环完成并且您访问了所有元素后:

def linear_search(lista, target):
    for i, elem in enumerate(lista):
        if elem == target:
            return i
    # if you don't find the target return None
    return None

如果您想知道是否可以在列表中找到某个特定值,并且您想要找到它所在位置的索引,那么您可以这样做:

def linear_search(lista, target):
  try:
    return lista.index(target)
  except ValueError:
    pass

此函数将 return 给定列表中目标值的索引或 None 未找到的索引