我有一个长度为32683的列表,我必须在另一个长度为2905的列表中搜索此列表中的项,我这样写:
for item in phone_register_users:
if item not in service_users_ids:
counter += 1
(phone_register_users的长度为32683,service_users_ids的长度为2905) 但这需要大约14秒才能完成,而且实在太多了,我该如何改善呢?
答案 0 :(得分:2)
您可以使用set:
set1 = set(phone_user_register_list1)
set2 = set(services_user_ids_list2)
unq = set1.intersection(set2)
从交叉点可以获取在电话用户注册和服务用户id两者中都包含的元素列表。
因此要进行电话注册中但服务用户ID中没有的元素的计数器使用:
counter = len(phone_register_user)-len(unq)
答案 1 :(得分:1)
根据wiki,list
的搜索复杂度为O(n)
,您可以尝试使用set
或dict
将其简化为{ {1}},这样的话就足够了:
O(1)