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

如何基于指定元素“Bob”将Python列表拆分为符合要求的子列表

实现方案

单次遍历方案(推荐,适合大规模列表)

该方案仅需遍历原列表1次,时间复杂度为O(n),无额外查找开销,适配超大规模列表场景:

foo = ["Bob", 14, 20, "Sam", "Bob", 15, 23, "Bob", "Jim", 14]

result = []
current_sublist = []

for element in foo:
    if element == "Bob":
        # 遇到分界元素时,先存入上一个已完成的子列表
        if current_sublist:
            result.append(current_sublist)
        # 初始化新的子列表
        current_sublist = [element]
    else:
        # 非分界元素直接追加到当前子列表
        current_sublist.append(element)
# 补充存入最后一个子列表
if current_sublist:
    result.append(current_sublist)

print(result)
# 输出结果:[["Bob", 14, 20, "Sam"], ["Bob", 15, 23], ["Bob", "Jim", 14]]

索引切片方案(写法更简洁)

如果列表规模不大,追求代码简洁度,可以先收集所有Bob的索引位置,再批量切片:

bob_positions = [idx for idx, val in enumerate(foo) if val == "Bob"]
result = [foo[start:end] for start, end in zip(bob_positions, bob_positions[1:] + [None])]

该方案需要遍历列表2次(一次收集索引、一次切片),性能略低于单次遍历方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:06:04