Python 列表上的线性搜索?

Python 列表上的线性搜索?,python,Python,我为一个简单的线性搜索编写了以下代码: def floor(array, target): i = 0 while i < len(array): if array[i] == target: print("The target value can be found at index: " + str(array[i])) break else: i = i + 1 f

我为一个简单的线性搜索编写了以下代码:

def floor(array, target):
    i = 0
    while i < len(array):
        if array[i] == target:
            print("The target value can be found at index: " + str(array[i]))
            break
        else:
            i = i + 1

floor([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14], 5)
def地板(阵列、目标):
i=0
而i

我遇到的问题是它没有返回我想要的值。由于某些原因,它不会从0开始计数,因此当我将目标设为1时,它会告诉我索引为1。同样地,如果我将目标设为4,它将在索引4处给出第二个值4,而不是索引3处的值。即使目标是一个更高的数字,它似乎也只计算一次4的值。我不确定我做错了什么,有人能提供一些建议吗?

您正在打印索引处的值,即
array[I]
而不是
I
您正在打印索引处的数组值,而不是索引本身。这就解决了问题。也可以考虑返回而不是打印语句。
def floor(array, target):
    i = 0
    while i < len(array):
        if array[i] == target:
            print("The target value can be found at index: " + str(i))
            return i
        else:
            i = i + 1

four_ind = floor([1, 2, 3, 4, 4, 5, 6, 7, 8, 9], 4) # returns 3
def地板(阵列、目标):
i=0
而i
试试这个:

def floor(array, target):
    for i, value in enumerate(array):
        if value == target:
            print('target is in:', i)

floor([1,2,3,4,5, 4, 4,6], 4)

天哪,我真不敢相信我没看到。非常感谢你!作为将来的参考,列表的内置“索引”方法可以为您做到这一点。例如,[4,8,15,16,23,42]。索引(15)返回2。