gpt4 book ai didi

python - 过滤成对(元组)列表,其中元组不包含来自另一个列表的任何值

转载 作者:行者123 更新时间:2023-11-28 20:55:49 26 4
gpt4 key购买 nike

我有一个元组列表:

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] 中。

它确实有效,但我正在寻找一种更简洁/pythonic 的方式,如果有的话。理想情况下可扩展(不只是添加 p[2] not in list 和 p[3] not in list and 等条件。

最佳答案

扁平比嵌套好

blacklist = {p[0] for p in blacklist_of_tuples}
[p for p in my_list if p[0] not in blacklist and p[1] not in blacklist]

这不能解决一般情况,但您可以使用破折号 any 来解决这个问题:

[p for p in my_list if not any(el in blacklist for el in p)]

关于python - 过滤成对(元组)列表,其中元组不包含来自另一个列表的任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com