我有一个元组列表:
my_list = [(1,2),(2,3),(3,4),(4,5),(5,6),(7,8)]
以及要排除的值列表,其格式如下:
reference_list = [(2,20),(3,46),(4,918)]
我要排除的值是该对中的第一个。(20、46、918的含义并不重要)
所以我想返回一个元组列表,其中不包含任何2,3,4值。你知道吗
[(5,6),(7,8)]
(因为所有其他值都包含一个或多个值2、3或4)
我试过的:
[p for p in my_list if p[0] not in [v[0] for v in reference_list] and p[1] not in [v[0] for v in reference_list]]
我正在检查该对的第一个或第二个值是否不在引用列表的列表v[0]中。你知道吗
它确实有效,但我正在寻找一个更简洁/Python的方式,如果有的话。理想的可扩展性(不需要添加条件,比如p[2]不在列表中,p[3]不在列表和中)。你知道吗
出于性能考虑,对于较大的列表,应创建一个包含第二个列表的第一个元素的集合:
一般来说,
intersection
方法比any
快一点:平的比嵌套的好
这并不能解决一般情况,但您可以使用一点^{} :
将列表理解与^{} 一起使用:
代码:
相关问题 更多 >
编程相关推荐