2
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没有括号的东西。

4

2 回答 2

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几乎相同的东西,略短(使用可以表现得像 number的事实1):

>>> sum(L[i:i+len(s)]==s for i in range(len(L)))
2
于 2013-04-27T22:57:56.643 回答
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])
于 2013-04-27T22:56:29.407 回答