2016-08-24 72 views
0

是否有任何有效的方式来比较集合与列表的集合。目前我只是遍历集合列表并将列表中的每个元素与特定集合进行比较。 例如:set1=Set([1,2,5]) and lst1=[Set([1,2,3,4,5]),Set([10,11,12]),Set([7,8,9])]现在我必须比较set1与列表lst1中的每一组。现在,如果我得到set1-st==0其中st是一套lst1我将打破循环,但将继续当set1-st!=0。 是否有任何有效的方式来做这种比较,或者我们必须以旧的方式做到这一点(迭代列表并与给定的集合进行比较)。有效的方法来比较一组集合在Python中的集合列表

+0

你善用'Set'那里。你是否在使用'sets.Set'类的'sets'模块?这是不赞成的;你应该使用内建的'set'类型。 – user2357112

+0

我正在使用'set' .. – djtama

回答

0

在这种情况下,您可以使用all()内置函数:

>>> set1=set([1,2,5]) 
>>> lst1=[set([1,2,3,4,5]),set([10,11,12]),set([7,8,9])] 
>>> 
>>> all(set1-i for i in lst1) 
False 
>>> 
>>> all(i-set1 for i in lst1) 
True 

或者根据你的情况,你可以建立一套统一使用set.union()您的清单,然后做你的设置和新的操作:

>>> set().union(*lst1) 
{1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12} 
+0

在我的情况下,执行'union'不是一个选项。并且在''all'()'在我现在正在做的背景中做同样的事情(迭代列表并与给定集合进行比较)。 – djtama

+0

@djtama这里有两件事情,如果您必须与所有项目进行比较,除了在列表中循环以外无法进行其他操作,否则您可能可以对列表项目执行一些操作并将其转换为一个或多个设置为了减少循环次数。还要注意'all()'接受一个生成器表达式并且比常规循环执行得更好。 – Kasramvd