【发布时间】:2017-06-14 13:19:46
【问题描述】:
我正在为我的考试而学习,偶然发现了这个:
问题是:哪个算法最快,哪个最慢。
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 in d,其中 d 是字典并使用哈希),为什么?我认为哈希使一切都为 O(1),所以它们应该相等。
谢谢。
【问题讨论】:
-
在 3 中你只检查键和值不比较
标签: python list dictionary runtime python-3.5