我的python代码中有一个列表列表,我想检查这些列表中的任何是否包含某两个项目。
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]
我想要类似的东西:
if 'a' in flist[0:5] and 'b' in flist[flist.index('a')]:
print (true)
最简单的方法是什么?
答案 0 :(得分:3)
您可以any
使用issubset
:
if any({'a', 'b'}.issubset(sublist) for sublist in flist):
print "a and b were found"
使用any
,只要找到搜索项的超集,就会立即取消搜索。
这可以处理子列表可能包含两个以上项目的一般情况。
但是如果子列表总是包含两个项目,那么检查是否相等就足够了:
if any({'a', 'b'} == set(sublist) for sublist in flist):
print "a and b were found"
答案 1 :(得分:1)
for f in flist:
if 'a' not in f:
continue
if 'b' not in f:
continue
return True
return False
答案 2 :(得分: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])