2016-08-24 16 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を得る場合stlst1に設定されていますが、私はループから壊れますが、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'はオプションではありません。私が今やっているバックグラウンドで同じことをやっています(リストを繰り返して指定したセットと比較する)。 – djtama

+0

@djtamaここには2つのものがあります。すべてのアイテムと比較する必要がある場合は、リストをループする以外の方法はありません。そうしないと、リストアイテムに対して何らかの設定操作を行い、ループの数を減らすためです。 'all()'はジェネレータ式を受け入れ、通常のループよりも優れたパフォーマンスを発揮します。 – Kasramvd

関連する問題