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。