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

如何交换列表中行程元组的城市并保持出发到达逻辑连贯

行程元组列表顺序调整方案

核心逻辑非常简单:行程连贯的本质是相邻两段的到达/出发城市一致,只要你先确定好调整后的完整城市通行顺序,再把顺序里相邻的两个城市两两配对生成新元组即可,完全不需要修改原有元组,也不会出现衔接断裂的问题。

具体实现步骤

  • 提取全量城市集合:如果需要基于原始行程调整,先从原始元组列表里把所有途经城市按原始顺序提取出来,避免遗漏城市
  • 调整城市顺序:按照你想要的通行先后,排列出最终的城市一维序列,比如示例里从[a,b,c,d]调整为[a,d,c,b]
  • 生成新行程列表:遍历调整后的城市序列,把索引相邻的两个城市分别作为出发、到达城市拼成元组,组成最终的列表

代码实现(Python)

# 原始行程样例
original_routes = [('a', 'b'), ('b', 'c'), ('c', 'd')]

# 工具方法:从连贯的行程列表中提取完整城市顺序
def extract_city_sequence(routes):
    if not routes:
        return []
    city_seq = [routes[0][0]]
    for start, end in routes:
        city_seq.append(end)
    return city_seq

# 提取原始城市顺序
raw_cities = extract_city_sequence(original_routes)
# 此处按照需求调整城市顺序,示例调整为a->d->c->b
target_cities = ['a', 'd', 'c', 'b']

# 相邻配对生成新行程
new_routes = [
    (target_cities[i], target_cities[i+1]) 
    for i in range(len(target_cities) - 1)
]

print(new_routes)
# 输出结果:[('a', 'd'), ('d', 'c'), ('c', 'b')]

注意事项

  • 不要尝试直接在原始元组列表上交换元组、修改元组内部值,这种操作很容易出现前后段城市不衔接的问题
  • 只要最终的城市序列是你想要的通行顺序,生成的行程列表天然满足衔接要求:第n段的到达城市一定是第n+1段的出发城市
  • 如果只是局部调整路线(比如调换中途两个城市的顺序、反向走某段路),只需要修改target_cities里对应位置的城市排序即可,生成行程的逻辑不需要改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:57:18