2012-02-26 9 views
0

のために複数のリストを確認し、私は3つのリストPythonのは、例えば、類似

list1=['Oh','My','god','I','A','List!'] 

list2=['Oh','What','You','Dramatic?'] 

Keyword=['I','Dunno','What','You','Talking','About','DOT'] 

EDIT

を持っている私は、リスト1と別に2でキーワードを比較したいです。それはなるだろう:私は10の以上のリストを持っていた場合はどう

EDIT

common=['What','I','You'] 

? < - オプションの質問です。

+0

を '「I」は次のような

何かが何をしたいあなたを与える必要があります'は' list2'にはありませんが、 'common'に属していますか? –

+0

はい、3つのリストすべてにある必要はありません。 –

+0

あなたが探している結果を与えるべき私の答えを見てください(おそらく、 'common'のために異なった順序で)。 –

答えて

0

あなたのコメントは、あなたがKeywordいずれかlist1またはlist2の両方に存在するアイテムが必要なことを示しているので、あなたはおそらくありませんすべての3つの交差点が必要です。代わりにlist1list2の和集合を取得し、その結果とKeywordの共通部分を取得する必要があります。

common = list((set(list1) | set(list2)) & set(Keyword)) 

以上の拡張性があり、代替的アプローチ(短縮版のためのカールのおかげで)::

lists = [list1, list2, list3, list4, list5, list6, list7, list8, list9, list10] 
common = list(set().union(*lists).intersection(Keyword)) 
+0

今すぐテスト:P –

+0

それは動作します!ありがとうございました! –

+0

'set.union'は' * args'を受け入れますので、 'reduce'を呼び出す理由はありません。また、リストを 'union'に供給し、必要に応じて設定してもらうこともできます。これは少し速くても簡単です。あなたが必要とするのは 'common = list(set().union(* lists)&set(Keyword))'、または同等の意味です。 'common = list(set()。union(* lists).intersection(Keyword) –

3

おそらくsetを使用します。

common = list(set(list1) & set(list2) & set(Keyword)) 

しかし、あなたが記載されている言葉は、あなたが示したリストのにのみ共通しているので、あなたは「各リストから共通の単語」によって何を意味するかを定義する必要があるかもしれません。

+0

ちょうど私が必要なもの^ _^ –

+0

ああ、私はちょうどそれを試してみました、私は残念だったものではありません:/ –

+0

まあ、あなたは*どんな場合でもセットを使用したいと思う*。 'print list(set(list1)&set(list2))'だけを試して、何が起こるか見てみましょう。 –

2

あなたが交差点を行い、その後セットに変換できます。

intersect = list(set(list1) & set(list2)) & set(Keyword))