You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串分割为长度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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:20:21