是否有一种方法将字符串分割成长度n,但也考虑其排列?



排列可能不是正确的单词。

表示x = "123456"。我希望我的代码输出['12','23','34','45','56']。现在,我知道如何将其拆分为['12','34','56']

你只需要一个增量为1的范围

def split_into(values, n):
return [values[i:i + n] for i in range(len(values) - n + 1)]

x = "123456789"
print(split_into(x, 2))  # ['12', '23', '34', '45', '56', '67', '78', '89']
print(split_into(x, 3))  # ['123', '234', '345', '456', '567', '678', '789']
print(split_into(x, 4))  # ['1234', '2345', '3456', '4567', '5678', '6789']
print(split_into(x, 5))  # ['12345', '23456', '34567', '45678', '56789']

在Python 3.10中,看起来itertools.pairwise()会做你想做的:

>>> from itertools import pairwise
>>> print(*map(''.join, pairwise("123456")))

以上只是一个模拟,因为我还没有3.10;-)在那之前,pairwise()的文档提供了另一种选择:

from itertools import tee
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return zip(a, b)
print(*map(''.join, pairwise("123456")))

最新更新