检查多个列表是否包含多个项目

时间:2016-09-18 14:37:10

标签: python list

我的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)

最简单的方法是什么?

3 个答案:

答案 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])