2016-09-18 12 views
-1

私はPythonコードにリストのリストを持っていますが、のリストのうちにはある2つの項目が含まれています。複数のリストに複数の項目が含まれていないか確認してください

if 'a' in flist[0:5] and 'b' in flist[flist.index('a')]: 
    print (true) 

これを行う最も簡単な方法は何ですか:

f1=['a','b'] 
f2=['c','d'] 
f3=['e','f'] 
f4=['g','h'] 
f5=['i','j'] 
f6=['k','l'] 

flist=[f1,f2,f3,f4,f5,f6] 

は、私のような何かをしたいですか?

+0

「flist」を繰り返し実行し、そこにあるすべてのリストをチェックするのはなぜですか? – UnholySheep

+0

どのリストに両方の項目が含まれているかを確認したいですか? – Paul

+0

'flist'を繰り返して、両方の要素を持つリストのインデックスを取得できます。 –

答えて

1
for f in flist: 
    if 'a' not in f: 
     continue 
    if 'b' not in f: 
     continue 
    return True 
return False 
+0

ありがとう、私は前に似たようなものを試しましたが、うまくいきませんでした。これは良いことです。 – user2972359

3

あなたはissubsetanyを使用することができます。

if any({'a', 'b'}.issubset(sublist) for sublist in flist): 
    print "a and b were found" 

anyを使用することにより、検索はすぐに発見されたスーパーセット検索項目のとしてオフと呼ばれています。

これは、サブリストに2つ以上の項目が含まれる一般的なケースを処理します。


しかしサブリストはは、常に2つの項目が含まれる場合、平等をチェックするのに十分である:

if any({'a', 'b'} == set(sublist) for sublist in flist): 
    print "a and b were found" 
1

あなたはそれを反復処理する方法に関する。

for i in range(len(flist)): 
    if ['a', 'b'] == sorted(flist[i]): 
    print (i) 

または単にライナーが存在するかどうかを知ることができます。

print (["a", "b"] in [sorted(x) for x in flist]) 
+0

'for i in range(len(flist)) 'の代わりに' for flist'を 'for sublist'に使用してください。 – jadsq

+0

が存在していた場合はそのリストのインデックスを出力します。 –

+0

インデックスを保持したい場合は、 'for i、enumerate(flist)のサブリスト'を使います。 – jadsq

関連する問題