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

Python如何无需嵌套for循环高效生成字符串所有连续子串

实现方案

你可以直接用Python标准库itertools.combinations实现,无需手写嵌套循环,也不需要额外排序和空值过滤,代码非常简洁:

import itertools

text = 'abcd'
result = [text[i:j] for i, j in itertools.combinations(range(len(text) + 1), 2)]
print(result)

运行输出和你要求的结果完全一致:

['a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd']

思路说明

  • 所有连续子串都可以通过左闭右开的起止索引对(i,j) 唯一确定,其中i < j
  • itertools.combinations(range(len(text)+1), 2)会自动生成所有满足i < j的索引组合,生成顺序刚好匹配你需要的输出顺序,不需要额外排序
  • 没有冗余计算,也不需要判断空串,是生成所有连续子串的最优实现,时间复杂度为O(n²),和生成的子串总量匹配,没有额外开销
  • 如果你不想引入标准库,也可以简化原有嵌套列表推导,去掉冗余判断和排序,性能也会明显提升:
text = 'abcd'
result = [text[y:i] for y in range(len(text)) for i in range(y+1, len(text)+1)]

内容的提问来源于stack exchange,提问作者ancient

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:45:04