测试python列表中是否存在元组

测试python列表中是否存在元组,python,Python,我有一个给定的python列表,如下所示 given_list = [ (4, 6, 28, 9, 2, 26, 0), (4, 6, 28, 9, 2, 26, 15), (4, 6, 28, 9, 2, 7, 15), (4, 6, 28, 9, 26, 0, 15), (4, 6, 28, 2, 26, 0, 15), (4, 6, 9, 2, 26, 0, 15), (4, 28, 9, 2, 26, 0, 15), (6,

我有一个给定的python列表,如下所示

given_list = [
    (4, 6, 28, 9, 2, 26, 0),
    (4, 6, 28, 9, 2, 26, 15),
    (4, 6, 28, 9, 2, 7, 15),
    (4, 6, 28, 9, 26, 0, 15),
    (4, 6, 28, 2, 26, 0, 15),
    (4, 6, 9, 2, 26, 0, 15),
    (4, 28, 9, 2, 26, 0, 15),
    (6, 28, 9, 2, 26, 0, 15),
]
ref_list = [
    (7, 28),  # has 1 in Lists
    (57, 2),  # has 0 in Lists
    (6, 9, 0),  # has 2 in Lists
    (6, 28, 9, 2, 26, 0),  # has 1 in Lists
]
我有一份参考清单如下

given_list = [
    (4, 6, 28, 9, 2, 26, 0),
    (4, 6, 28, 9, 2, 26, 15),
    (4, 6, 28, 9, 2, 7, 15),
    (4, 6, 28, 9, 26, 0, 15),
    (4, 6, 28, 2, 26, 0, 15),
    (4, 6, 9, 2, 26, 0, 15),
    (4, 28, 9, 2, 26, 0, 15),
    (6, 28, 9, 2, 26, 0, 15),
]
ref_list = [
    (7, 28),  # has 1 in Lists
    (57, 2),  # has 0 in Lists
    (6, 9, 0),  # has 2 in Lists
    (6, 28, 9, 2, 26, 0),  # has 1 in Lists
]
如果元组包含引用列表中任何元组的所有元素,我需要从给定列表中提取一些元组

我试了以下方法

given_list = [
    (4, 6, 28, 9, 2, 26, 0),
    (4, 6, 28, 9, 2, 26, 15),
    (4, 6, 28, 9, 2, 7, 15),
    (4, 6, 28, 9, 26, 0, 15),
    (4, 6, 28, 2, 26, 0, 15),
    (4, 6, 9, 2, 26, 0, 15),
    (4, 28, 9, 2, 26, 0, 15),
    (6, 28, 9, 2, 26, 0, 15),
]
ref_list = [
    (7, 28),  # has 1 in Lists
    (57, 2),  # has 0 in Lists
    (6, 9, 0),  # has 2 in Lists
    (6, 28, 9, 2, 26, 0),  # has 1 in Lists
]
给定_列表中项目的
:
对于ref_列表中的ref:
如果项目中的所有(参考):
打印(项目)
但是,我错了

(4, 6, 28, 9, 2, 26, 0)
(4, 6, 28, 9, 2, 26, 0)
(4, 6, 28, 9, 26, 0, 15)
(4, 6, 28, 9, 26, 0, 15)
(4, 6, 28, 2, 26, 0, 15)
(4, 6, 28, 2, 26, 0, 15)
(4, 6, 9, 2, 26, 0, 15)
(4, 6, 9, 2, 26, 0, 15)
(4, 28, 9, 2, 26, 0, 15)
(4, 28, 9, 2, 26, 0, 15)
(6, 28, 9, 2, 26, 0, 15)
(6, 28, 9, 2, 26, 0, 15)
预计:

# [(4, 6, 28, 9, 2, 26, 0), 
#  (4, 6, 28, 9, 2, 7, 15),
#  (4, 6, 28, 9, 26, 0, 15),
#  (4, 6, 9, 2, 26, 0, 15),
#  (6, 28, 9, 2, 26, 0, 15)]

您可以使用集合高效地执行此操作:

given_list = [
    (4, 6, 28, 9, 2, 26, 0),
    (4, 6, 28, 9, 2, 26, 15),
    (4, 6, 28, 9, 2, 7, 15),
    (4, 6, 28, 9, 26, 0, 15),
    (4, 6, 28, 2, 26, 0, 15),
    (4, 6, 9, 2, 26, 0, 15),
    (4, 28, 9, 2, 26, 0, 15),
    (6, 28, 9, 2, 26, 0, 15),
]

ref_list = [
    (7, 28),  # has 1 in given_list
    (57, 2),  # has 0 in given_list
    (6, 9, 0),  # has 2 in given_list
    (6, 28, 9, 2, 26, 0),  # has 1 in given_list
]

ref_sets = [set(tup) for tup in ref_list]

out = [tup for tup in given_list if any(s.issubset(tup) for s in ref_sets)]
print(out)

# [
#     (4, 6, 28, 9, 2, 26, 0), 
#     (4, 6, 28, 9, 2, 7, 15),
#     (4, 6, 28, 9, 26, 0, 15),
#     (4, 6, 9, 2, 26, 0, 15),
#     (6, 28, 9, 2, 26, 0, 15),
# ]

请注意,您预期的输出缺少第一个元组,其中包含6、9和0。

您可以使用集合高效地完成此操作:

given_list = [
    (4, 6, 28, 9, 2, 26, 0),
    (4, 6, 28, 9, 2, 26, 15),
    (4, 6, 28, 9, 2, 7, 15),
    (4, 6, 28, 9, 26, 0, 15),
    (4, 6, 28, 2, 26, 0, 15),
    (4, 6, 9, 2, 26, 0, 15),
    (4, 28, 9, 2, 26, 0, 15),
    (6, 28, 9, 2, 26, 0, 15),
]

ref_list = [
    (7, 28),  # has 1 in given_list
    (57, 2),  # has 0 in given_list
    (6, 9, 0),  # has 2 in given_list
    (6, 28, 9, 2, 26, 0),  # has 1 in given_list
]

ref_sets = [set(tup) for tup in ref_list]

out = [tup for tup in given_list if any(s.issubset(tup) for s in ref_sets)]
print(out)

# [
#     (4, 6, 28, 9, 2, 26, 0), 
#     (4, 6, 28, 9, 2, 7, 15),
#     (4, 6, 28, 9, 26, 0, 15),
#     (4, 6, 9, 2, 26, 0, 15),
#     (6, 28, 9, 2, 26, 0, 15),
# ]

请注意,您期望的输出缺少第一个元组,其中包含6、9和0。

请不要为变量使用
CamelCase
名称
CamelCase
是类名称的保留服务器。@Adrio是的,更正了列表中的
all(RefList)
并没有表达您认为它是什么。另外,您可能正在打印列表len(RefList)中的每个元素。请不要为变量使用
CamelCase
名称
CamelCase
是类名称的保留服务器。@Adrio是的,更正了列表中的
all(RefList)
并没有表达您认为它是什么。此外,还可能打印列表len(RefList)中的每个元素。