检查列表中的集合是否存在于其他集合中的Python方法

检查列表中的集合是否存在于其他集合中的Python方法,python,set,Python,Set,我有一张布景单 lst = [s1, s2, s3] 在哪里 s1 = set([1, 2, 3]) s2 = set([2, 3, 4]) s3 = set([2, 4, 6]) 我还有一套 set1 = set([1, 2, 3, 5]) 因此,当我执行lst-set1时,我应该得到set()。一种方法是,只需遍历lst的每个元素,然后使用set1执行减号。我想知道是否有任何蟒蛇式的方法可以做到这一点 例如: s1 = set([1, 2, 3, 4]) s2 = set([2, 3

我有一张布景单

lst = [s1, s2, s3]
在哪里

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s3 = set([2, 4, 6]) 
我还有一套

set1 = set([1, 2, 3, 5])
因此,当我执行
lst-set1
时,我应该得到
set()
。一种方法是,只需遍历
lst
的每个元素,然后使用
set1
执行减号。我想知道是否有任何蟒蛇式的方法可以做到这一点

例如:

s1 = set([1, 2, 3, 4])
s2 = set([2, 3, 4])
s3 = set([2, 4, 6])

lst = [s1,s2,s3]

set1 = set([1, 2, 3, 5, 4])

因此,我需要检查列表中的任何元素
lst
是否存在于
set1
中。您可以使用
in
操作符。它适用于任何类似数组的容器,包括列表、元组、集合和字典键

set_list = [set(1, 2, 3), set(2, 3, 4), set(2, 4, 6)]

# returns True
set([1,2,3]) in set_list

# returns False
set([5, 6, 7]) in set_list

# returns False, just to show that types must match
[1, 2, 3] in set_list

要获得集合之间差异的列表,可以使用


对于集合列表中的集合项,列表理解将在集合列表中循环。然后确保结果集不为空
如果set\u item-my\u set
。最后,它返回语句左侧的结果
set\u item-my\u set

my set1有更多的元素,因此这将给出关于s1=set([1,2,3,4])s2=set([2,3,4])s3=set([2,4,6])lst=[s1 s2,s3]set1=set([1,2,3,5,4])的错误lst中的set1…..它给出了False,我希望是TRUE。您需要解释在您的问题中预期的积极结果。不清楚预期的输出是什么
lst-set1
显然是未定义的。
列表
集合
之间没有区别。是否需要元素差异,即
[子集-set1表示lst中的子集]
?或者整个列表应该被解释为一个平面集吗?
lst-set1
不应该是
{4,6}
?所以当我执行lst-set1时,我应该得到set()。为什么?如果是元素操作,我希望
[empty\u set,set(4),set(2,4,6)]
。你到底想在这里实现什么?我只想检查我是否得到空的集合。我只想检查列表中的集合是否可以被另一个集合覆盖。虽然我会得到上面的结果,但我更感兴趣的是看到set()结果。一种方法是循环列表中的元素并逐个检查,但我只是想知道是否有任何python方法可以做到这一点。这正是列表理解所做的。它在列表中循环,并允许您对项目执行简单的检查或转换。我回答的哪一部分没有给出你想要的结果?我需要检查空集,你的第二个例子就是这样做的。我想知道的是,列表理解是否比本地技术更快(循环列表中的元素,然后逐个检查差异),性能没有差异;这两种技术在引擎盖下做同样的事情。你问是否有一种更“pythonic”的方法来实现它,列表理解是一种特定于python的处理迭代的方法。除非你真的遇到了性能瓶颈,否则你不应该担心速度。这个问题尤其没有性能捷径。无论您使用中的
操作符还是列表理解,它都必须在整个列表上循环以过滤它或查找结果。重要的是您的代码的可读性如何,并且取决于您询问的对象,对于python代码,列表理解是一种更具可读性的模式。
my_set = set([1, 2, 3, 5])

set_list = [
    set([1, 2, 3]),
    set([2, 3, 4]),
    set([2, 4, 6]),
]

# find differences between sets in list and my_set, remove empty sets
[set_item - my_set for set_item in set_list if set_item - my_set]
# returns [set([4]), set([4, 6])]

# to return only empty sets
[set_item - my_set for set_item in set_list if not set_item - my_set]