Python中如何将字符串滑动切片为连续定长子串(如abcd切为abc、bcd)
固定长度滑动窗口连续子串实现方案
你需要的是窗口长度3、滑动步长1的重叠式字符串切分,和非重叠的固定间隔n字符切分逻辑不同,直接按起始索引遍历截取合法子串即可,以Python实现为例:
基础实现代码
# 原始字符串 origin_str = "abcdefghijk" # 滑动窗口长度 window_len = 3 # 滑动步长 step = 1 sub_str_list = [] # 计算所有合法的起始索引范围:保证截取的子串长度等于窗口长度,不会越界 for start_idx in range(0, len(origin_str) - window_len + 1, step): sub_str_list.append(origin_str[start_idx : start_idx + window_len]) # 打印输出结果 for sub in sub_str_list: print(sub)
运行输出
abc bcd cde def efg fgh ghi hij ijk
如果只需要当前场景(窗口长3、步长1)的最简写法,可以直接用列表推导式一行完成:
sub_str_list = [origin_str[i:i+3] for i in range(len(origin_str) - 2)]
逻辑说明:普通每n个字符分割的方案,本质是步长等于窗口长度的非重叠切分,只要把步长参数调整为1,遍历所有不会导致子串越界的起始位置做切片,就能得到连续滑动的重叠子串序列。如果需要调整窗口长度或者滑动步长,只需要修改对应参数即可通用。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

