Python比较元组列表与普通列表 返回元组第二项不在列表中的元组
Python 元组列表筛选实现
需求说明
从元组列表中,筛选出元组第二个元素未在给定普通列表中出现的所有元组。
示例输入
# 待筛选的元组列表 listTuple = [('IN', 'OS19014'), ('CA', 'OS0001'), ('GB', 'OS0002'), ('CA', 'OS0003')] # 用于对比的普通列表 normalList = ['OS19014', 'OS0001', 'OS0002']
预期输出
[('CA', 'OS0003')]
实现代码
推荐先将普通列表转为集合优化查询效率,集合的成员查询时间复杂度为O(1),远高于列表的O(n),数据量越大性能优势越明显。
写法1:列表推导式(最简洁常用)
normal_set = set(normalList) result = [item for item in listTuple if item[1] not in normal_set]
写法2:filter 函数写法
normal_set = set(normalList) result = list(filter(lambda x: x[1] not in normal_set, listTuple))
两种写法执行后打印result都可以得到预期输出。
内容的提问来源于stack exchange,提问作者Ashu
相关产品推荐
相关产品推荐

