Python如何不导入模块按非字母字符分割字符串获取纯字母列表
字符串提取全字母列表优化方案
你现有代码的逻辑是正确的,但存在性能缺陷:每次执行replace操作都会完整遍历一次整个字符串,当输入字符串长度较大时,时间复杂度会达到O(n²),运行效率很低。
优化后代码
temp = [] for ch in mystring: temp.append(ch if ch.isalpha() else ' ') mylist = ''.join(temp).split()
方案优势
- 仅对输入字符串做1次遍历,时间复杂度降到O(n),长字符串场景下性能提升显著
- 仅生成1次中间字符串副本,内存占用更低
- 依赖Python内置的
str.isalpha()方法,原生支持所有Unicode字母识别,完全覆盖阿拉伯语、希伯来语等非拉丁字母的判断需求,不需要导入任何模块,符合要求
效果验证
用你给出的示例输入测试:
mystring = "ashtray ol'god for, shure! i.have " temp = [] for ch in mystring: temp.append(ch if ch.isalpha() else ' ') mylist = ''.join(temp).split() print(mylist) # 输出:['ashtray', 'ol', 'god', 'for', 'shure', 'i', 'have']
完全符合预期输出要求。
内容的提问来源于stack exchange,提问作者bogus
相关产品推荐
相关产品推荐

