運行時間差我一同學爲我的測試和偶然發現了這一點:瞭解列表VS字典
的問題是:哪個算法是最快,這是最慢的。
def f1():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j == a[j]:
print("yes")
def f2():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j in a:
print("yes")
def f3():
d = {}
for j in range(100000):
d[j] = j*j
for j in range(100000):
if 99999*j in d:
print("yes")
我明白F2是最慢,因爲檢查的項目是在你運行在列表上的所有成員名單。
哪個運行速度更快?布爾表達式:(99999 * j == a [j])或(99999 * j在d中,其中d是字典並使用散列),爲什麼?我認爲哈希使所有東西都O(1),所以它們應該是平等的。
謝謝。
在3你只檢查鍵和值不會比較 – sahama