计算列表中的子列表

时间:2013-04-27 22:53:06

标签: python list

L=[2,4,5,6,2,1,6,6,3,2,4,5,3,4,5]

我想知道任意子序列显示的次数,例如s=[2,4,5]将返回2次。

我尝试L.count(s)但它不起作用,因为我认为它不希望在没有方括号的情况下寻找[random numbers ... [2,4,5] ... random numbers]而不是2,4,5之类的内容。

2 个答案:

答案 0 :(得分:4)

>>> L = [2,4,5,6,2,1,6,6,3,2,4,5,3,4,5]
>>> s = [2,4,5]
>>> sum(1 for i in range(len(L)) if L[i:i+len(s)]==s)
2

几乎相同,略短(使用True可以表现得像1的事实):

>>> sum(L[i:i+len(s)]==s for i in range(len(L)))
2

答案 1 :(得分:0)

x=0
for i in range(len(L)):
    if L[i:i+len(s)]==s:
        x+=1

或使其成为列表理解:

len([None for i in range(len(L)) if L[i:i+len(s)]==s])