有没有办法避免在分配列表时产生嵌套列表?

问题描述 投票:0回答:1

如果您想查看完整代码/自己运行程序,这里有一个 git 链接。

我的问题总结是:我有一个嵌套列表,并且该列表内的列表应该移动到它们所做的另一个列表。由于某种原因,那些被移动的列表最终会成为三重嵌套,如下所示: [[[66, 81]], [[83, 41]]] 而不是这样: [ ... [83,41], [66, 81]]

我编写了一个遵循预测算法 RITMO 的程序。该程序具有完成任务的节点/无人机:(移动到点)。

这会随机生成 (x,y) 值的列表。虽然很乱,但仍然有效。 (点生成)

randomList = []
    randomList1 = []
    pointlist = []
    for i in range(1000):  #This is overkill and could be accomplished with neater code but it works.
       r=random.randint(1,100)
       r1=random.randint(1,100)
       if r not in randomList:
          randomList.append(r)
       if r1 not in randomList1:
           randomList1.append(r1)
    while len(randomList1) > numofp:
        randomList1.pop()
    while len(randomList) > numofp:
        randomList.pop()

    for i in range(0, len(randomList)):
        insidelist = []
        insidelist.append(randomList[i]) #X
        insidelist.append(randomList1[i]) #Y
        pointlist.append(insidelist) #creats massive point list.

    return pointlist

这需要上面的列表并随机将其分成 (min_length & max_length) 3-7 段。 (点派)

result = []

while input_list:
    sublist_length = random.randint(min_length, max_length) #Gen random num
    if sublist_length > len(input_list):
        sublist_length = len(input_list)

    selected_elements = input_list[:sublist_length]
    result.append(selected_elements) #Splice section
    input_list = input_list[sublist_length:]

return result
    newPointlist = break_list_into_sublists(oldPointlist, 3, 7)

    for i in range(0, AmountofNodes): #List of 5 Nodes/Drones randomly given name & points
        Nodelist.append(Node(name_gen(), newPointlist[i - 1], 5)) # 5 is queue/task max

输出:您可以看到任务中的列表如何移动到职位列表

  1. 名称:sJ\Q# 当前任务:2 个任务列表:[[[66, 81]]、[[83, 41]]] 队列大小阈值:5 个位置:[[77, 49]、[48, 59 ], [71, 35], [67, 85]]

任务从任务列表移至职位列表

  1. 名称:sJ\Q# 当前任务:1 个任务列表:[[[66, 81]]] 队列大小阈值:5 个位置:[[77, 49], [48, 59], [71, 35], [67, 85], [[83, 41]]]

问题是我不知道“[[[66, 81]], [[83, 41]]]”在哪里 三重嵌套列表或元素来自。它们应该只是 [ ... [83,41], [66,81] ]

Node 对象从不同节点移动任务的方式可能会出现错误,从而导致不必要的嵌套这里是 Git 的链接,只有 3 个文件: main、droneobject 、randomnodenamgen

如果有人能帮助我那就太好了!!

python list algorithm arraylist output
1个回答
0
投票

在我看来,你的第二个摘录导致了嵌套:

selected_elements = input_list[:sublist_length]
result.append(selected_elements) #Splice section
input_list = input_list[sublist_length:]

input_list
是 2 元素列表的列表。
selected_elements
也是如此。
result
以空列表开始,并附加了列表列表,使其深度为 3 个列表。
如果你重写它...

selected_elements = input_list[:sublist_length]
result = result + selected_elements #Splice section
input_list = input_list[sublist_length:]

...它应该只有 2 个列表深。

© www.soinside.com 2019 - 2024. All rights reserved.