###设置查询指标 target = [ 765 , 987 , 54 , 7321 , 43 , 53 , 654 , 9887 , 0 , - 10 , - 20 , - 30 , - 40 , - 50 , - 60 , - 70 , - 80 , - 90 ] start = time . time ( ) for t in target : if t in list_a : continue end_list = time . time ( ) for t in target : if t in dict_a : continue end_dict = time . time ( ) print ( "list中的查找时间为:{}" . format ( end_list - start ) ) print ( "dict中的查找时间为:{}" . format ( end_dict - end_list ) )

list中的查找时间为:10.822270154953003
dict中的查找时间为:0.0011639595031738281

我们可以发现,其执行效率上相差了近10000倍。

       python中in函数的作用是查找是否有元素存在在list和dict中。我们现在测试一下执行的效率。原理说明       list的存储形式是线性表,查找的效率其实是O(n);dict的存储形式是哈希表,查找的效率是O(1)实验部分import time###设置列表和字典list_a ... 需要做的操作如下: # 针对字典类型 pred_ list = [[row[0], row[1]] for row in pred if row[0] in truth.keys()] # 针对列表类型 pred_ list = [[row[0], row[1]] for row in pred if row[0] in truth_keys] 也即,针对每一行数据,判断该行的标签是否在truth 存在,如果存在,则赋值到pre
经常会做的一个操作是使用in来判断元素是否在列表 ,这种操作非常便捷,省去了自行遍历的工作,而且因为大多数时候列表数据量比较小,搜索的速度也能满足需求。 key_ list = [1, 2, 3, 4, 5, 6, 7, 8] key = 10 if key in key_ list : print("Hello!") 但是,凡是就怕个但是,当列表数据量非常大的时候,比如你要在一个长度为一百万(1...
python 的in和not in语句一般在字典和列表下使用,可以判断一个元素是否存在字典和列表 。 我试了一下相同的长度的字典和列表,用in判断,之间的速度相差很大。 字典的查找明显比列表快很多,速度可能快100倍不止。 如果程序可以选择使用字典或者列表,又需要类似的判断,可以用字典替换列表,来提速。
在学习过程 ,有用到判断元素是否在列表 ,通常都使用in set( list )来判断 在字典 通常使用in dict 来判断元素是否在字典的keys 那么为什么不能直接用in list 或者in dict .keys()呢,查阅问题发现,使用in list 效率 极低,时间复杂度为O(n),属于顺序遍历。而set和 dict 的存储方式是以hash存储,时间复杂度在O(1)~O(n)之间 至于in dict .keys()为什么不使用,众说纷纭,有人说 dict ,keys()的数据结构和 list 一样,会导致耗时很长,有人说
1.插入元素>>> li = ['a', 'b', 'z', 'example'] >>> li.insert(2,'new')#在指定的位置插入 >>> li ['a', 'b', 'new', 'z', 'example'] >>> li.append('app')#插入到末尾 >>> li
python in在 list dict 查找 效率 比较首先给一个简单的例子,测测 list dict 查找的时间:import timequery_lst = [-60000,-6000,-600,-60,-6,0,6,60,600,6000,60000]lst = [] dic = {}for i in range(100000000): lst.append(i) dic[i] = 1
坑爹的知识点! 我一直用in list ,程序运行一直超时,前前后后检查代码好几遍,发现除了遍历这里不一样,其余都一样,百度一查 才知道 in list 效率 比 in dict 效率 低很多!! 切记:能用in dic.keys() 就不要用 in list import time query_lst = [-60000,-6000,-600,-60,-6,0,6,60,600,6000,60000] lst = [] dic = {} for i in range(10000000):