如果您想查看完整代码/自己运行程序,这里有一个 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
输出:您可以看到任务中的列表如何移动到职位列表
任务从任务列表移至职位列表
问题是我不知道“[[[66, 81]], [[83, 41]]]”在哪里 三重嵌套列表或元素来自。它们应该只是 [ ... [83,41], [66,81] ]
Node 对象从不同节点移动任务的方式可能会出现错误,从而导致不必要的嵌套这里是 Git 的链接,只有 3 个文件: main、droneobject 、randomnodenamgen
如果有人能帮助我那就太好了!!
在我看来,你的第二个摘录导致了嵌套:
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 个列表深。