我要測量下面的函數需要多少時間來表示:範圍[0,10]中的C與列表N中的數字(每個C的M個測量)。測量時間M次的函數
import itertools
def amount(C):
N = [1, 2, 5]
#N = list(N)
N = sorted(N)
while C < max(N):
N.remove(max(N))
res = []
for i in range(1, C):
for j in list(itertools.combinations_with_replacement(N, i)):
res.append(sum(list(j)))
m = 0
for z in range (0, len(res)):
if res[z] == C:
m += 1
if N[0] == 1:
return m + 1
else:
return m
編輯:
import itertools
def amount(C):
N = [1, 2, 5]
res = []
for i in range(1, C):
for j in list(itertools.combinations_with_replacement(N, i)):
res.append(sum(list(j)))
m = 0
for z in range (0, len(res)):
if res[z] == C:
m += 1
if N[0] == 1:
return m + 1
else:
return m
我想作10次測量,然後採取所有這些測量的例子中位數。
還有就是我的代碼,但不幸的東西不能正常工作,我不知道什麼是錯的:
import time
def time_counter(amount, n=11, M=11):
res = list(range(n))
def count_once():
start = time.perf_counter()
amount(res)
return time.perf_counter() - start
return [count_once() for m in range(M)]
_「但遺憾的事情不能正常工作」 _。你怎麼知道的?你是否收到錯誤信息?如果是這樣,那是什麼?你是否獲得了你不期望的產出?如果是這樣,你會得到什麼產出,以及你期望的產出?你沒有得到任何產出?可能是因爲你實際上並沒有在任何時候調用'time_counter'。或者,如果您打電話給'time_counter',但沒有向我們展示您的所有代碼,請實際向我們展示您的所有代碼。 – Kevin
它可以節省您一些努力來使用[timeit](https://docs.python.org/2/library/timeit.html),而不是編寫自己的函數計時代碼。 – Kevin
我收到一條錯誤消息,它是:**只能連接列表(不是「int」)到列表**。 這就是我所有的代碼。只有「量」功能,然後是那個應該測量時間的功能。 – Hendrra