如何不使用for循环为列表生成判断元素是否在另一集合的掩码
方案1:纯Python标准库实现(无需额外依赖)
先把列表a转为集合,利用集合O(1)时间复杂度的成员查询特性提升效率,再通过map高阶函数完成匹配,全程不需要显式编写for循环:
a = ["a","b","c"] b = ["a","c","d","e"] set_a = set(a) result = list(map(lambda x: x in set_a, b)) print(result) # 输出:[True, True, False, False]
注:Python3中map返回的是迭代器,需要用list()转成列表格式才能得到目标结果。
方案2:numpy实现(适合处理大规模数据)
如果允许使用第三方库,numpy内置的isin方法可以直接生成布尔掩码,代码更简洁,处理长列表时性能优势更明显:
import numpy as np a = ["a","b","c"] b = ["a","c","d","e"] result = np.isin(b, a).tolist() print(result) # 输出:[True, True, False, False]
内容的提问来源于stack exchange,提问作者Juan Paulo Reguyal
相关产品推荐
相关产品推荐

