如何以 n 个字符为一组而不是一次一个字符来迭代字符串?

Men*_* A. 1 python python-3.x

认为 -

string = "abcdefgh"
Run Code Online (Sandbox Code Playgroud)

如果我做 -

for i in string:
    print (i)
Run Code Online (Sandbox Code Playgroud)

我得到-

a
b
c
d
e
f
g
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的 -

ab
bc
cd
de
ef
fg
Run Code Online (Sandbox Code Playgroud)

或者我们指定的任何其他分组。是否可以为此创建一个函数,同时牢记我们需要的分组?谢谢

Ter*_*ryA 5

您可以使用zip()

>>> for i, j in zip(string, string[1:]):
...     print(i+j)
... 
ab
bc
cd
de
ef
fg
gh
Run Code Online (Sandbox Code Playgroud)

作为一个函数:

def func(seq, n):
    return [''.join(item) for item in zip(*[seq[n:] for n in range(n)])]
Run Code Online (Sandbox Code Playgroud)

例子:

>>> for item in func("abcdefgh", 3):
...     print(item)
... 
abc
bcd
cde
def
efg
fgh
Run Code Online (Sandbox Code Playgroud)