在另一个列表python中搜索列表项的最佳方法?

时间:2019-12-03 07:17:30

标签: python python-3.x list performance search

我有一个长度为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秒才能完成,而且实在太多了,我该如何改善呢?

2 个答案:

答案 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)

根据wikilist的搜索复杂度为O(n),您可以尝试使用setdict将其简化为{ {1}},这样的话就足够了:

O(1)