在 Python 中一次选择多个元素迭代列表

The*_*ser 3 python iteration list sequence python-3.x

我有一个列表,我想从中迭代一定长度的切片,尽可能最大程度地相互重叠,例如:

>>> seq = 'ABCDEF'
>>> [''.join(x) for x in zip(seq, seq[1:], seq[2:])]
['ABC', 'BCD', 'CDE', 'DEF']
Run Code Online (Sandbox Code Playgroud)

换句话说,是否有zip(seq, seq[1:], seq[2:])可以指定每个子序列长度的简写?

Bło*_*tek 6

这不是一个优雅的解决方案,但这是有效的:

seq = 'ABCDEF'
n=3
[seq[i:i+n] for i in range(0, len(seq)+1-n)]
Run Code Online (Sandbox Code Playgroud)