无法在python中的search_slow和search_fast算法中定义某些“针”

时间:2016-02-25 17:41:59

标签: python algorithm timeit

我正在尝试对search_slow和search_fast算法进行计时,以查看两者之间是否存在显着差异,并在不同的计算机上运行此代码以查看时差。我已经让他们工作,但是,针似乎没有工作。

如果某个单词是否在文本文件中似乎没有关系,如果在test.txt文件中找不到指针,它应该返回false。有点难以解释所以我希望下面的代码能解释一下我正在尝试做的事情:

import timeit

haystack = open('test.txt', 'r+')
haystack = list(haystack.read().split())
needle = "Hello"

def search_fast(haystack, needle):
    for item in haystack:
        if item == needle:
            return_value = True        
        return True
    return False


def search_slow(haystack, needle):
    return_value = False
    for item in haystack:
        if item == needle:
            return_value = True
    return return_value



search_slow(haystack, needle)
print(timeit.timeit("search_slow(haystack, needle)", setup="from __main__ import search_slow, haystack, needle"))

search_fast(haystack, needle)
print(timeit.timeit("search_fast(haystack, needle)", setup="from __main__ import search_fast, haystack, needle"))

test.txt的内容是:

This is a random text file to test !

运行程序时我得到的值是:

  

0.77570605278

     

0.187502861023

1 个答案:

答案 0 :(得分:0)

首先在search_fast你有一个错误。这是一个固定版本。

def search_fast(haystack, needle):
    for item in haystack:
        if item == needle:
            return True
    return False

那就是说,你有两个可能的混乱原因。第一次尝试打印干草堆。您是否希望它有一个单词列表或一整行的列表?

第二个问题是,如果找到针头,你就没有任何有趣的代码。你回来吧。那么你怎么能知道它已被发现?