Python实现从嵌套列表X中剔除Y包含元素并存入Z的方法
实现方案
你可以通过以下两种方式完成需求:
方法1:高效实现(推荐)
利用集合做O(1)时间复杂度的查找,整体效率远高于遍历比对,适合数据量大的场景:
注意:Python中列表是可变类型,无法直接存入集合,所以需要先将Y中的子列表转为不可变的元组存储。
# 将Y中所有子列表转为元组存入集合,构建快速查询索引 y_index = set(tuple(sub_list) for sub_list in Y) # 筛选X中不在Y里的元素存入Z Z = [sub_list for sub_list in X if tuple(sub_list) not in y_index]
方法2:基础遍历写法(易理解)
不需要用到高级语法,适合新手理解逻辑,小数据量下也可以正常运行:
Z = [] # 逐个遍历X中的每个子列表 for item in X: # 判断当前子列表不存在于Y中,就加入Z if item not in Y: Z.append(item)
内容的提问来源于stack exchange,提问作者sai prasanth
相关产品推荐
相关产品推荐

