了解list vs dict

时间:2017-01-29 05:49:50

标签: python list dictionary runtime python-3.5

我正在为我的考试而学习,偶然发现了这个:

问题是:哪种算法最快,即最慢​​

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)所以它们应该是平等的。

谢谢。

1 个答案:

答案 0 :(得分:0)

现在没有编辑案例3你只检查键而不是值,这可能是错误的。如果你像

那样编辑它
def f3():
    d = {}
    for j in range(100000):
        d[j] = j*j
    for j in range(100000):
        if d[j] == 99999*j:
            print("yes")

然后功能1也会更快