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

如何避免列表分配时产生三重嵌套?RITMO算法程序求助

问题排查与解决方案:无人机任务列表三重嵌套异常

问题核心

任务列表从tasks转移到positions时出现不必要的三重嵌套结构(如[[[66, 81]], [[83, 41]]]),预期格式应为二维列表[..., [83,41], [66,81]]。

代码逻辑分析

  1. pointgen函数:生成的是符合预期的二维坐标列表[[x1,y1], [x2,y2], ...],这部分逻辑无问题。
  2. break_list_into_sublists函数:将二维列表拆分为多个子列表,返回三维列表[[[x1,y1], ...], [[x3,y3], ...]],这是为每个节点分配子任务的合理设计,本身不是异常根源。
  3. 节点初始化:通过newPointlist[i-1]为每个Node传入子任务列表,问题大概率出在Node类的任务处理逻辑或任务跨节点移动的代码中。

排查与修复方向

1. 检查Node类的任务存储逻辑

确认Node初始化时,是否错误地将传入的子任务列表中的每个坐标点再次嵌套。例如:

  • 错误写法:self.positions.append([point])
  • 正确写法:self.positions.append(point)

2. 排查任务移动的核心代码

当执行任务从tasks到positions的转移操作时,检查是否对单个坐标点进行了多余的列表包裹。比如:
如果存在类似以下代码:

# 错误:给单个坐标点额外加了一层列表
for task in self.tasks:
    self.positions.append([task])

修改为:

# 正确:直接添加二维坐标点
for task in self.tasks:
    self.positions.append(task)

3. 优化pointgen函数(非必要,但提升效率)

原函数生成不重复随机数的方式效率较低,可替换为更简洁高效的实现:

import random

def pointgen(numofp):
    # 生成numofp个不重复的x、y坐标
    xs = random.sample(range(1, 101), numofp)
    ys = random.sample(range(1, 101), numofp)
    # 组合为二维坐标列表
    return [list(coord) for coord in zip(xs, ys)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:20:28