'的效率对python中不同数据结构的操作

时间:2016-05-29 12:13:12

标签: python algorithm data-structures

我是编程的新手,当我使用python时,我发现了' in'操作在不同数据结构上的表现是完全不同的。例如:

GeneralWindowView

我结束了这样的结果,这是非常有效的

a=list_a######list_a and list_b both are lists,data scale:300,000
b=set(list_b)
t1=time()
s=0
for entry in a:
    if entry in b:
        s+=1
t2=time()
print t2-t1

然而,当我搜索list_b而不改变为设置数据结构

0.0699999332428

这次结果花了将近十分钟

a=list_a
b=list_b
t1=time()
s=0
for entry in a:
    if entry in b:
        s+=1
t2=time()
print t2-t1

我搜索了互联网,发现这与哈希地图有某种关系,但仍然令人困惑。任何人都可以详细解释这个或者python中有其他类似的数据结构吗?

提前感谢。

1 个答案:

答案 0 :(得分:3)

列表具有线性时间查找。这是因为要查找项目是否在列表中,Python需要扫描每个项目,直到找到匹配项;所以它花费的时间与列表的长度成正比。列表越长,需要的时间越长。在计算机科学术语中,这被称为O(n)时间复杂度。

集和词典具有恒定时间查找。它们不仅仅存储一系列元素,只按位置索引,而是存储值的哈希值。要查找是否存在匹配项,Python会散列值并转到匹配的索引。无论集合多大,它总是需要相同的时间 - 这被称为O(1)复杂性。