2017-04-23 5 views
0

セットのリストを持つと、最初のセットと2番目のセット、3番目のセットと2番目のセットとの間の交差点を持つリストを持っていたいと思います。たとえば :リスト内のpythonのペアごとの交差点

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])) 

を持っていると思います。

最初の回答はモジュールのインポートを必要としない本当に良い答えです。 (ジッパーを使用しています)もう一つは次のようになります。

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

何が問題になりましたか? – tdelaney

+0

最終結果を複数のリストを保持する単一のセットにしたいですか?リストはハッシュ可能ではないので、動作しません。 – tdelaney

+0

実行中のサンプルを投稿することを検討してください(または可能な限り)。例えば、 'meine_liste_len'は存在しません。私が解決策を投稿するつもりなら、これらの変数が何であるかを把握し、それらを追加する必要があります。あなたは私たちのためにその作業を行うべきです。 – tdelaney

答えて

0

あなたはすべてのインデックスが、リストの最後のメンバーを取得するためにrange(0, len(list_of_sets) - 1)を使用することができます。次に、2つの隣接する集合は、単にインデックスとインデックス+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}] 
+0

ありがとうございます!私は、関数内で "&"を使うことができることを知りませんでした。 –