我一直在尝试将一个字符串切成三组,并带有重叠。
例如,'abcdefg'
到'abc', 'bcd', 'cde', 'def', 'efg'
我目前的代码是:
s = 'abcdefg'
[s[i:i+3] for i in range(0, len(s), 3)]
但这只会让我回复'abc'
,'def'
,'g'
。
如何更改它以便我可以重叠?我希望它能够为任何字符串长度执行此操作。
答案 0 :(得分:2)
您可以将列表理解更改为:
>>> [s[i:i+3] for i in range(len(s)-2)]
['abc', 'bcd', 'cde', 'def', 'efg']
目前你正在采取3步(而不是1),所以你没有得到重叠。您还希望在字符串结尾前停止i
两个位置(或者您也会获得较短的子字符串'fg'
和'g'
),因此请从2
开始字符串的长度。