Python中allSubStrings函数循环失效原因排查求助
Python子串生成函数循环异常问题分析与修复
问题根源分析
- allSubStrings循环范围错误:函数里用
range(len(string))生成的k值是0到len(string)-1,但子串的有效长度应该是1到原字符串长度。当k=0时,调用subString(string, 0)会触发死循环,直接卡住整个流程。 - subString死循环逻辑:当传入x=0时,每次切片得到的空字符串长度等于x,会不断添加到列表,且循环终止条件
j < 1永远成立(j初始为0,else分支从未触发),导致i无限递增,进入死循环。另外原函数用j变量控制循环的设计完全冗余,逻辑绕且易出错。
修复方案
优化subString函数
直接通过计算有效索引范围生成子串,去掉冗余逻辑:
def subString(string, x): cutList = [] # 子串长度为x时,起始索引最大为 len(string) - x for i in range(len(string) - x + 1): cutList.append(string[i:i+x]) return cutList
修正allSubStrings函数
调整循环范围,覆盖所有有效子串长度:
def allSubStrings(string): fullList = [] # 子串长度从1到原字符串长度(包含) for k in range(1, len(string) + 1): fullList.extend(subString(string, k)) return fullList
测试效果
以输入"hello"为例:
subString("hello", 3)返回['hel','ell','llo'],符合预期allSubStrings("hello")返回所有子串:['h','e','l','l','o','he','el','ll','lo','hel','ell','llo','hell','ello','hello']
内容的提问来源于stack exchange,提问作者devchap8
相关产品推荐
相关产品推荐

