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

Python如何基于指定分隔值将列表拆分为不含分隔符的子列表

解决方案

最优雅的实现方式是使用Python标准库itertools.groupby,仅需一次隐式遍历即可完成拆分,无需编写多层循环:

from itertools import groupby

# 原始列表
original_list = ['#main', '89631139', '22804410', '38517737', '#extra', '43228023', '56532353', '!side', '22804410', '45467446', '31801517', '63767246']
# 定义分隔符集合
separators = {'#main', '#extra', '!side'}

# 核心拆分逻辑:按是否为分隔符分组,过滤掉分隔符组后直接赋值给对应变量
main, extra, side = [list(group) for is_sep, group in groupby(original_list, key=lambda x: x in separators) if not is_sep]

运行后变量值完全符合预期:

print(main)  # ['89631139', '22804410', '38517737']
print(extra) # ['43228023', '56532353']
print(side)  # ['22804410', '45467446', '31801517', '63767246']

方案优势

  • 时间复杂度为O(n),和手动循环效率一致,没有额外性能损耗
  • 代码简洁,仅需一行核心逻辑即可完成拆分
  • 扩展性强,新增分隔符只需更新separators集合和对应接收变量即可

如果需要不依赖分隔符出现顺序的更灵活映射,可以使用仅单次循环的实现:

separator_map = {'#main': 'main', '#extra': 'extra', '!side': 'side'}
result = {}
current_tag = None

for item in original_list:
    if item in separator_map:
        current_tag = separator_map[item]
        result[current_tag] = []
    elif current_tag:
        result[current_tag].append(item)

# 使用方式:result['main']、result['extra']、result['side']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:06:02