列表中的python成对交集

时间:2017-04-23 20:29:33

标签: python-3.x

有一个集合列表,我希望有一个列表,第一个集合与第二个集合,第二个集合与第三个集合,依此类推。 例如:

list_of_sets=[set([1,2,3,4,5]),set([1,2,3,5]),set([4,5,6])
meine_liste_len=len(list_of_sets) 
pairwise_intersection_list=[]  
for x in range(0,meine_liste_len-1):
    for y in range(1,meine_liste_len):
        pairwise_intersection_list.append(set x.intersection(set(y)))

我想

 pairwise_intersection_list=set(([1,2,3]),([5]))

结果。

第一个答案是一个非常好的答案,不需要导入模块。另一个(使用zip)将是:

        pairwiseintersect_list=([i.intersection(j) for i,j inzip(list_of_sets,list_of_sets[1:]) 

1 个答案:

答案 0 :(得分:0)

您可以使用range(0, len(list_of_sets) - 1)获取除列表最后一个成员之外的所有成员的索引。然后两个相邻的集合只是索引和索引+ 1。使用它与列表理解,你得到

>>> list_of_sets=[set([1,2,3,4,5]),set([1,2,3,5]),set([4,5,6])]
>>> new_list = [list_of_sets[i] & list_of_sets[i+1] for i in range(0, len(list_of_sets)-1)]
>>> new_list
[{1, 2, 3, 5}, {5}]