有一个集合列表,我希望有一个列表,第一个集合与第二个集合,第二个集合与第三个集合,依此类推。 例如:
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:])
答案 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}]