如何使用滑动窗口迭代器获取指定长度的子字符串列表
嘿,你的思路其实已经很接近了!我们来一步步完善代码,让它完美实现你想要的滑动窗口子串提取需求~
解决方案:提取指定长度的滑动窗口子字符串列表
你的迭代器思路非常巧妙!只需要稍作调整,把每次生成的窗口收集到结果列表中,就能得到目标输出了。
修正后的迭代器实现代码
size = 4 word = "PYTHON" result = [] # 用来存储最终的子字符串列表 win = [] i = iter(word) # 初始化第一个窗口 for _ in range(size): win.append(next(i)) result.append(''.join(win)) # 把字符列表转为字符串存入结果 # 滑动窗口,生成后续子串 for e in i: win = win[1:] + [e] result.append(''.join(win)) print(result) # 输出:['PYTH', 'YTHO', 'THON']
代码细节解释
- 新增
result列表专门用来保存所有生成的子字符串; - 初始化窗口后,用
''.join(win)把字符列表转换成完整的字符串,再添加到result中; - 后续滑动窗口时,重复“更新窗口→转字符串→存入结果”的步骤;
- 最终
result就是我们需要的子字符串列表。
更简洁的字符串切片写法
如果你觉得迭代器的方式有点繁琐,也可以直接用字符串切片实现,代码会更简洁直观:
size = 4 word = "PYTHON" result = [word[i:i+size] for i in range(len(word) - size + 1)] print(result) # 输出:['PYTH', 'YTHO', 'THON']
这个列表推导式的逻辑很清晰:从索引0开始,每次取长度为size的切片,直到最后一个合法的起始索引(也就是len(word)-size),自动生成所有滑动窗口的子串。
两种方法都能实现需求,你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者Chuepapiii
相关产品推荐
相关产品推荐

