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个元素的所有列表,但不知何故,这似乎不是这样做的方式.
任何帮助表示赞赏.
为什么不简单地使用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)
归档时间: |
|
查看次数: |
519 次 |
最近记录: |