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

如何按指定长度列表对总长度匹配的字符串高效切片拆分?

按指定长度列表拆分字符串的简洁实现

基础实现(无第三方依赖)

你原有的代码冗余在于不需要维护两个计数器,直接遍历长度列表,仅需1个偏移量变量即可完成拆分:

a = [1, 3, 4]
s = "01100110"
offset = 0
split_result = []
for length in a:
    split_result.append(s[offset:offset+length])
    offset += length

# 输出拆分结果
for part in split_result:
    print(part)

运行后输出结果和需求完全一致:

0
110
0110

函数式简洁写法(基于itertools)

如果希望进一步简化代码,无需手动维护偏移量,可以用itertools.accumulate计算累加长度,直接生成切片区间:

from itertools import accumulate

a = [1, 3, 4]
s = "01100110"
split_result = [s[start:end] for start, end in zip([0, *accumulate(a)], accumulate(a))]

逻辑说明:

  • accumulate(a) 会返回长度列表的累加迭代器,示例中对应值为 1, 4, 8,刚好是每个切片的结束位置
  • 起始位置列表补0后和结束位置列表一一配对,直接切片即可得到所有拆分片段

两种方案的时间复杂度均为O(n)(n为字符串总长度),和你原有实现的执行效率完全一致,仅在写法上更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:48:02