如何将字符串分割为长度n的滑动重叠子串?
实现字符串的滑动窗口式连续子串分割
你要的是滑动窗口式的连续子串分割——从字符串起始位置开始,每次向右移动1个字符,截取固定长度n的子串,直到无法截取完整的n长度子串为止。以下是Python的几种实现方式:
基本实现(列表推导式,最简洁)
x = "123456" n = 2 result = [x[i:i+n] for i in range(len(x) - n + 1)] print(result) # 输出: ['12', '23', '34', '45', '56']
核心逻辑:range(len(x) - n + 1) 确保循环次数刚好等于可截取的有效子串数量——比如字符串长度为6、子串长度为2时,6-2+1=5,对应5个有效子串。
分步循环实现(适合理解逻辑)
x = "123456" n = 2 result = [] # 循环到最后一个能截取完整n长度子串的位置 for i in range(len(x) - n + 1): substring = x[i:i+n] result.append(substring) print(result)
封装成可复用函数
如果需要多次使用,可以封装成函数,增加参数合法性校验:
def sliding_substrings(s, sub_length): # 处理非法参数:子串长度不能小于1,也不能超过原字符串长度 if sub_length <= 0 or sub_length > len(s): return [] return [s[i:i+sub_length] for i in range(len(s) - sub_length + 1)] # 调用示例 print(sliding_substrings("123456", 2)) # 输出: ['12', '23', '34', '45', '56'] print(sliding_substrings("123456", 3)) # 输出: ['123', '234', '345', '456']
内容的提问来源于stack exchange,提问作者La Lala
相关产品推荐
相关产品推荐

