Python运行线性搜索时time delta输出0.0问题排查求助
问题原因说明
print语句不存在问题,出现该现象是两个错误共同导致的:
- 线性搜索函数逻辑错误:你编写的
linear_search函数中,return False的缩进位置错误,被放置在了for循环内部。这会导致遍历第一个元素时,如果元素不等于目标值就直接返回False,不会继续遍历后续元素。整个函数的执行时间最多只有一次条件判断的耗时,耗时极短,普通时间戳精度无法捕捉到时间差,因此输出0.0。debug模式下因为存在调试状态监测的额外开销,才会出现可观测的时间差值。 - 计时工具精度不足:
time.time()用于获取系统级时间戳,精度受操作系统影响较大,对微秒级以下的短耗时场景捕捉能力不足,统计短耗时更推荐使用精度更高的time.perf_counter()。
修复后可正常运行的代码
import time import itertools def linear_search(arry, target): for index, value in enumerate(arry): if value == target: return True # 调整return False缩进至循环外,遍历完全部元素未命中才返回 return False k = list(itertools.islice(range(2000000), 1, 2000000, 2)) # 换用高精度计时工具 start = time.perf_counter() linear_search(k, 25) done = time.perf_counter() delta = done - start print(delta)
内容的提问来源于stack exchange,提问作者Gladiator
相关产品推荐
相关产品推荐

