2016-09-18 4 views
-1

Ich habe eine Liste von Listen in meinem Python-Code, und ich möchte überprüfen, ob einer dieser Listen enthält eine bestimmte zwei Elemente enthält.Überprüfen Sie, ob mehrere Listen mehrere Elemente enthalten

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] 

Ich möchte so etwas wie:

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

Was ist der einfachste Weg, dies zu tun?

+0

Warum nicht einfach über "flisten" iterieren und die Überprüfung auf jeder Liste dort tun? – UnholySheep

+0

Sie wollen also herausfinden, welche Listen beide Elemente enthalten? – Paul

+0

können Sie einfach über 'flist' iterieren und den Index der Liste, die beide Elemente enthält, abrufen. –

Antwort

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

Danke, ich habe vorher schon etwas ähnliches versucht, aber es hat nicht funktioniert, das ist gut. – user2972359

3

Sie können any mit issubset verwenden:

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

von any verwenden, wird die Suche, sobald ein Obermenge der Suchbegriffe aus gefunden wird genannt.

Dies behandelt den allgemeinen Fall, in dem die Unterlisten mehr als zwei Elemente enthalten können.


Aber wenn die Sublisten immer zwei Elemente enthalten wird, ist es ausreichend, für Gleichheit zu überprüfen:

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

Wie wäre es einfach über sie iterieren.

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

oder Sie können einfach One-Liner tun, nur um zu wissen, ob es existiert.

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

Verwenden Sie 'für die Unterliste in fist' anstelle von' für i im Bereich (len (fist)) '. – jadsq

+0

das war, wenn es existierte, dann drucke den Index dieser Liste. –

+0

Wenn Sie den Index behalten wollen, dann 'für i, Unterliste in Enumerate (flippen)' ist der Weg zu gehen. – jadsq

Verwandte Themen