要するに、指定された長さ(500,1000,10000)ごとに100個のランダムな整数リストを作成し、結果を格納することによっていくつかの関数をテストする必要があります。最終的には、各テストの平均実行時間を計算できるようにする必要がありますが、まだコードを使ってそれを実現していません。必要なリストの長さの値を格納するために辞書を作成テスト結果をPythonに格納する
- :私は次のことを想定し
は、このアプローチする最良の方法でした。
- その辞書の各値に対して、新しい乱数リスト(list_tests)を生成します。
- 各機能テスト(test_results)の結果を格納する別の辞書を作成します。
- whileループを使用して、各長さのリストを100個作成します。
- whileループで各関数を呼び出し、各結果を結果辞書に格納してテストを実行します。
プログラムが実行するように見えるが、私はカップルの問題を抱えている:
- それは他のlist_tests値に達することはありません。それは私が(メインのループと間違って行ってきたところ、私は非常に)理解していないtest_results辞書
の値を上書きしています500
は私のプログラムは次のとおりです。私はあなたが47
行で
found = True
代わりの
found == True
を意味だと思う
import time
import random
def sequential_search(a_list, item):
start = time.time()
pos = 0
found = False
while pos < len(a_list) and not found:
if a_list[pos] == item:
found = True
else:
pos = pos+1
end = time.time()
return found, end-start
def ordered_sequential_search(a_list, item):
start = time.time()
pos = 0
found = False
stop = False
while pos < len(a_list) and not found and not stop:
if a_list[pos] == item:
found == True
else:
if a_list[pos] > item:
stop = True
else:
pos = pos+1
end = time.time()
return found, end-start
def num_gen(value):
myrandom = random.sample(xrange(0, value), value)
return myrandom
def main():
#new_list = num_gen(10000)
#print(sequential_search(new_list, -1))
list_tests = {'t500': 500, 't1000': 1000, 't10000': 10000}
for i in list_tests.values():
new_list = num_gen(i)
count = 0
test_results = {'seq': 0, 'ordseq': 0}
while count < 100:
test_results['seq'] += sequential_search(new_list, -1)[1]
test_results['ordseq'] += ordered_sequential_search(new_list, -1)[1]
count += 1
if __name__ == '__main__':
main()
"for"ループのほうがはるかに適切です –