Python timeit:将多个函数作为timeit过程函数的参数进行比较时的NameError

时间:2018-05-17 15:28:27

标签: python ipython timeit

我想测试不同的排序算法及其速度。算法函数看起来像这样:

def measure_algorithm(tests, algorithm):
   results = []
   for i in range(len(tests)):
      result = %timeit -n 100 -r 3 -o (algorithm(tests[i]))
      results.append(result.best)

   return results

其中参数是数字列表。我想将这些算法用于不同的输入长度以获得图形。所以我编写了一个测试函数,它将算法作为参数,并使用不同的输入长度测试该算法。

unsorted_list = [1, 3, 2, 9, 7, 5, 0, ...]
lengths = [10, 50, 100, 500, ...]
tests = []
for i in range(len(lengths)):
   tests.append(unsorted_list[:lengths[i]])

heapsort_times = measure_algorithm(tests, heapsort)
quicksort_times = measure_algorithm(tests, quicksort)
...

调用此函数的代码如下所示:

NameError: name 'algorithm' is not defined

但现在我得到了

authorize @artist

我正在使用Python 3和IPython Notebook。

我做错了什么?

0 个答案:

没有答案