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

如何将get_plan列表转为多段Depot起止的route_list(通用方法)

问题描述

现有如下get_plan列表:

get_plan = [
    ('Depot', 'Addr_3'),
    ('Addr_3', 'Addr_4'),
    ('Addr_4', 'Depot'),
    ('Depot', 'Addr_1'),
    ('Addr_1', 'Addr_2'),
    ('Addr_2', 'Depot'),
    ('Depot', 'Addr_5'),
    ('Addr_5', 'Addr_6'),
    ('Addr_6', 'Depot')
]

需要将其转换为route_list格式,每个子列表对应一条以Depot结尾、新路线以Depot起始的完整路径:

route_list = [
    [('Depot', 'Addr_3'), ('Addr_3', 'Addr_4'), ('Addr_4', 'Depot')],
    [('Depot', 'Addr_1'), ('Addr_1', 'Addr_2'), ('Addr_2', 'Depot')],
    [('Depot', 'Addr_5'), ('Addr_5', 'Addr_6'), ('Addr_6', 'Depot')]
]
通用实现方法

可以用Python编写如下通用逻辑,核心是按Depot结尾的节点拆分路线:

def split_routes(get_plan):
    route_list = []
    current_route = []
    for segment in get_plan:
        current_route.append(segment)
        # 当当前路段的终点是Depot时,完成一条路线
        if segment[1] == 'Depot':
            route_list.append(current_route.copy())
            current_route = []
    # 处理可能存在的未完成路线(若原列表最后未以Depot结尾)
    if current_route:
        route_list.append(current_route)
    return route_list

# 测试示例
get_plan = [
    ('Depot', 'Addr_3'),
    ('Addr_3', 'Addr_4'),
    ('Addr_4', 'Depot'),
    ('Depot', 'Addr_1'),
    ('Addr_1', 'Addr_2'),
    ('Addr_2', 'Depot'),
    ('Depot', 'Addr_5'),
    ('Addr_5', 'Addr_6'),
    ('Addr_6', 'Depot')
]

route_list = split_routes(get_plan)
print(route_list)

逻辑说明

  • 初始化结果列表route_list和当前路线缓存current_route
  • 遍历原列表的每一段路径:
    • 将当前路段加入缓存
    • 检查该路段的终点是否为Depot,若是则将缓存的路线加入结果,并重置缓存
  • 最后处理可能存在的未完成路线,避免原列表末尾无Depot导致数据丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:12:21