找到序列中长度为n的所有连续子序列

Wil*_*nes 5 python list

我想在序列中找到长度为n的所有连续子序列.

例如,说n为3,序列为:

[0,1,7,3,4,5,10]
Run Code Online (Sandbox Code Playgroud)

我想要一个可以产生输出的函数:

[[0,1,7],[1,7,3],[7,3,4],[3,4,5],[4,5,10]]
Run Code Online (Sandbox Code Playgroud)

提前致谢!

And*_*ark 16

>>> x = [0,1,7,3,4,5,10]
>>> n = 3
>>> zip(*(x[i:] for i in range(n)))
[(0, 1, 7), (1, 7, 3), (7, 3, 4), (3, 4, 5), (4, 5, 10)]
Run Code Online (Sandbox Code Playgroud)

如果您希望结果是列表而不是元组列表,请使用map(list, zip(...)).


JBe*_*rdo 13

>>> x = [0,1,7,3,4,5,10]
>>> [x[n:n+3] for n in range(len(x)-2)]
[[0, 1, 7], [1, 7, 3], [7, 3, 4], [3, 4, 5], [4, 5, 10]]
Run Code Online (Sandbox Code Playgroud)

  • 为了使任何子序列大小具有通用性:`[x [i:i + n] for i in range(len(x)-n + 1)]`其中`n`是子序列的期望长度. (6认同)