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
不幸的是,这没有抓住重点。我知道所有的,不幸的是,这没有抓住要点。我知道所有的