python查找列表元素_python如何从一个列表寻找不在另一个列表中的元素的方法
import time
# 假设有以下两个数据集列表
a = list(range(1, 100000))
b = list(range(150000, 50000, -1))
# 要从a中找到不在b中的数据,常常会想直接遍历两个列表即可
a_alone = []
start = time.time()
for i in a:
if i not in b:
a_alone.append(i)
end = time.time()
print(end - start) # 117s
# 可以看到效率是非常低下的,相当于O(n2)的时间复杂度
# 利用集合则能大幅提高效率
a_set = set(a)
b_set = set(b)
start = time.time()
# 求差集得到的是在a里但不在b里的数据集合,a独有
# 如果a,b不是空集合,a-b为空集合,说明a中的数据全部在b中
a_alone = a_set - b_set
end = time.time()
print(end - start) # 0.003s
# 效率大幅提升,相当于O(n)的时间复杂度(不清楚python的set实现机制,该处根据java中hashSet实现机制进行的推测)
# 集合的一些其他操作
# 求并集
c_set = a_set | b_set
# 求交集,结果集如果为空,说明两个集合没有任何数据是相同的
d_set = a_set & b_set
本博客源码Github地址:
请随手给个star,谢谢!