列表上的线性搜索?

时间:2016-02-11 02:13:05

标签: 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

floor([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14], 5)

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

3 个答案:

答案 0 :(得分:2)

您要在索引处打印出值array[i]而不是i

答案 1 :(得分:0)

您在索引处打印数组的值而不是索引本身。这解决了它。还要考虑返回而不是print语句。

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

答案 2 :(得分:0)

试试这个:

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)
相关问题