最近我在Python中学习了更多关于哈希的知识,我在这个博客中说到:
假设一个Python程序有2个列表.如果我们需要考虑比较这两个列表,你会怎么做?比较每个元素?嗯,这听起来很简单,但也很慢!
Python有一个更聪明的方法来做到这一点.当在程序中构造元组时,Python解释器会在其内存中计算其哈希值.如果在2个元组之间进行比较,它只是比较哈希值,它知道它们是否相等!
所以我对这些陈述感到很困惑.
首先,当我们这样做时:
[1, 2, 3] == [1, 2, 3]那么这种平等如何运作?它是否计算哈希值然后进行比较?
第二,当我们做的时候有什么不同:
[1, 2, 3] == [1, 2, 3]和(1, 2, 3) == (1, 2, 3)?
因为当我试图用timeit找到执行时间时,我得到了这个结果:
$ python3.5 -m timeit '[1, 2, 3] == [1, 2, 3]'
10000000 loops, best of 3: 0.14 usec per loop
$ python3.5 -m timeit '(1, 2, 3) == (1, 2, 3)'
10000000 loops, best of 3: 0.0301 usec per loop
Run Code Online (Sandbox Code Playgroud)
那么为什么从0.14列表到0.03元组的时间差异比列表更快.