Python 如何检查列表中的集合是否是彼此的子集?

Python 如何检查列表中的集合是否是彼此的子集?,python,list,set,Python,List,Set,我有一个列表,其中包含很多集合,我想检查列表中是否有这些集合的子集,以测试每个集合之间的差异 现在我是这样做的: 对于集合列表中的集合1: 对于集合列表中的集合2: 如果set1

我有一个列表,其中包含很多集合,我想检查列表中是否有这些集合的子集,以测试每个集合之间的差异

现在我是这样做的:

对于集合列表中的集合1:
对于集合列表中的集合2:
如果set1

虽然我对python有点陌生,但我在小便中发现,这种迭代方法是一种非常不符合python的方式。如何改进此功能?

有一个
issubset
方法

t = {1,2,3}
s = {1,2}
s.issubset(t)  # True

这与
s相同,有一个
issubset
方法

t = {1,2,3}
s = {1,2}
s.issubset(t)  # True
这与
s一样,更不用说“pythonic”。使用此代码,您将对每对集合进行两次测试。。。并对每一组进行自我测试。这里有一个例子,使用索引是值得的,并且可以节省一半的计算量。但您仍然可以使用pythonic外观并使用迭代,而不是增加int:

for i, set1 in enumerate(list_of_sets):
    for set2 in list_of_sets[i+1:]:
        if set1 < set2:
           do stuff
对于枚举中的i,set1(集合列表):
对于集合列表[i+1:]中的集合2:
如果set1
如果你的收藏量真的很大,你可以做其他优化,比如建立一个偏序(因为如果
set1
set2
,你可以预测
set1
会做什么),但老实说,我怀疑这是否值得你费心。

别介意“pythonic”。使用此代码,您将对每对集合进行两次测试。。。并对每一组进行自我测试。这里有一个例子,使用索引是值得的,并且可以节省一半的计算量。但您仍然可以使用pythonic外观并使用迭代,而不是增加int:

for i, set1 in enumerate(list_of_sets):
    for set2 in list_of_sets[i+1:]:
        if set1 < set2:
           do stuff
对于枚举中的i,set1(集合列表):
对于集合列表[i+1:]中的集合2:
如果set1
如果您的集合非常大,您可以进行其他优化,如构建偏序(因为如果
set1
set2
,您可以预测
set1
将做什么),但老实说,我怀疑这是否值得您费心。

您可以使用itertools.permutation来避免与自身组合进行重复比较

for set1, set2 in itertools.permutations(list_of_sets, 2):
    if set1 < set2:
        <do something>
itertools中set1、set2的
排列(集合列表,2):
如果set1
您可以使用itertools.permutations来避免与自身组合的冗余比较

for set1, set2 in itertools.permutations(list_of_sets, 2):
    if set1 < set2:
        <do something>
itertools中set1、set2的
排列(集合列表,2):
如果set1
不幸的是,这没有抓住重点。我知道所有的
,不幸的是,这没有抓住要点。我知道所有的