python查找列表元素_python如何从一个列表寻找不在另一个列表中的元素的方法

202008102025.jpg

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

j_0002.gif

本博客源码Github地址:

请随手给个star,谢谢!

THE END
< <上一篇
下一篇>>