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

如何按指定条件将列表元素划分为子列表?

列表拆分规则实现求助

原始列表:

a = [3, 2, 1, 2, 3, 1, 3, 1, 2]

拆分要求:

  • 将以1开头的连续元素段划分为子列表(段内元素从1开始,到下一个1出现前结束;即使段内没有包含1到N(此处N=3)的所有数字,仍需作为一个子列表)
  • 所有非1开头的单个元素,单独划分为子列表

期望输出:

b = [[3], [2], [1, 2, 3], [1, 3], [1, 2]]

你当前的尝试代码存在明显错误:a[i]是列表中的单个元素,不存在a[i][0]的索引,且逻辑无法实现需求。以下是正确的实现代码:

a = [3, 2, 1, 2, 3, 1, 3, 1, 2]
b = []
current_segment = []

for num in a:
    if num == 1:
        # 若存在未提交的1开头段,先提交到结果
        if current_segment:
            b.append(current_segment)
            current_segment = []
        # 开始收集新的1开头段
        current_segment.append(num)
    else:
        if current_segment:
            # 正在收集1开头段,直接加入当前段
            current_segment.append(num)
        else:
            # 非1元素且不在收集状态,单独作为子列表加入
            b.append([num])

# 提交最后一段未完成的1开头段
if current_segment:
    b.append(current_segment)

print(b)  # 输出符合期望的结果

代码逻辑说明

  1. 用current_segment临时存储正在收集的以1开头的连续元素段
  2. 遍历原始列表时:
    • 遇到1则开启新的收集段,若之前有未提交的段先提交给结果列表
    • 非1元素如果处于收集状态则加入当前段,否则单独成子列表
  3. 遍历结束后,将最后一段未提交的收集段加入结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:15