计算列表中的子列表

RTG*_*FRE 3 python list

L=[2,4,5,6,2,1,6,6,3,2,4,5,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我想知道任意子序列出现了多少次,s=[2,4,5]例如会返回 2 次。

我尝试过,L.count(s)但它不起作用,因为我认为它期望寻找类似的东西[random numbers ... [2,4,5] ... random numbers],而不是2,4,5没有括号的东西。

Ole*_*pin 5

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

True几乎相同的东西,稍微短一些(使用可以表现得像 number 的事实1):

>>> sum(L[i:i+len(s)]==s for i in range(len(L)))
2
Run Code Online (Sandbox Code Playgroud)

  • @Elazar不,它**不是**有点难以阅读,回到这里你已经读过这个:http://stackoverflow.com/a/3175293/1219006 (4认同)