计算Python 3中包含3个公共元素的子列表的数量

use*_*520 0 python list count nested-lists sublist

我在Windows 7中使用Python 3.4和Wing Personal.我有一个int列表和第二个包含3个int的列表.我想确定list [b]的所有3个元素出现在列表[a]中的次数.

a=[[1, 6, 11,12, 14, 15], [4, 11, 23, 32, 45, 48], 
  [3, 7, 11, 14, 15, 17], [1, 8, 14, 24, 45, 53], 
  [2, 5, 9, 24, 34, 40], [10, 11,13, 14, 15, 22, 36]]

b=[11,14,15]
count =0
anotherList = []
for sublist in a:
    for element in b:              
        if element in sublist:
            anotherList.append(element)
            count+=1
    print (anotherList)
    print (count/3)
Run Code Online (Sandbox Code Playgroud)

这里的计数应该是3,而不是3.6,而如果列表[a]包含20个子列表,并且在子列表的6个中发生单个14,则无法解决这个问题.

问题是这计算列表[b]中任何元素出现在列表[a]中的总次数,而不是所有3个元素的模式.我除了3分,这会使计数正确,直到我意识到如果一个列表中只有14个也被计算,那么计数将被关闭.

请注意,每个列表中的索引都不同,有时在我想要识别的元素之间会出现另一个元素.也就是说,元素并不总是在一起,如11,14,15.有时候介于两者之间.

我考虑过删除除11,14,15之外的所有数字然后删除少于3个元素的所有列表,但不知何故,这似乎不是这样做的方式.

任何帮助表示赞赏.

Ash*_*ary 6

为什么不简单地使用set?转换b为使用以下set.issubset方法设置查看它是否是列表中项目的子集:

b = {11,14,15}  #notice the {} braces or use `set([11,14,15])`
print sum(b.issubset(x) for x in a)
Run Code Online (Sandbox Code Playgroud)