【发布时间】:2024-04-29 05:35:02
【问题描述】:
我正在尝试创建一个包含来自节点的所有路径的列表,但我的列表只包含第一个路径一遍又一遍,即使我编写了一个应该遍历所有节点的范围函数。谁能告诉我哪里出错了?
这是输入:
Nodes:
1 (5,13) (1,3) [3]
2 (15,5) (2,1)
3 (8,11) (2,4) [1,4,5,6]
4 (11,3) (3,3) [1]
5 (3,7) (2,2)
6 (20,6) (1,1) [2,3,7]
7 (15,8) (3,4) [1,2,4]
如您所见,有些节点没有第三索引,这意味着它们可以访问所有路径 [1,2,3,4,5,6,7]
正确的列表应该是这样的:
[[3], [1,2,3,4,5,6,7], [1,4,5,6], [1], [1,2,3,4,5,6,7], [2,3,7], [1,2,4]]
print (all_paths)
给出 [1, 2, 3, 4, 5, 6, 7] 和 print(len(nodes)) 给出 7,它们工作正常,但 print(paths) 给出 [[3] , [3], [3], [3], [3], [3], [3]] 这是错误的。任何帮助将不胜感激。
all_paths = []
for i in range (len(nodes)):
all_paths.append(i+1)
def index_in_list(nodes):
for i in range (len(nodes)):
if (len(nodes[i])) < 3:
return False
else:
return True
paths = []
for i in range (len(nodes)):
if index_in_list(nodes) is True:
paths.insert(i,nodes[0][2])
else:
paths.insert([all_paths])
我尝试使用循环修复它,但现在我的路径列表保持为空
def index_in_list(nodes):
paths = []
while i < (len(nodes)):
if (len(nodes[i])) < 3:
paths.insert(i,[all_paths]
i = i + 1
else:
paths.insert(i,[all_paths])
i = i + 1
【问题讨论】:
-
请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。您发布的代码因
nodes未定义而死亡,并且没有明确的执行跟踪来显示结果开始偏离您的预期的位置。 -
在您提供 MRE 后,我很乐意查看您的更新。不要指望我们编写驱动程序、提供输入示例并纠正您的语法错误。
-
嗯,我使输入更清晰,根据 python 没有语法错误,我已经阅读了 MRE 应该是什么,我想我做到了。也许我遗漏了一些东西,因为英语不是我的第一语言而且我是初学者,但这是我所有的代码,其中节点作为输入以及应该从中得出的正确列表。
-
您的最后一个代码部分,即尝试修复,是一个两行函数,后跟一个
while循环,由于未定义的符号而失败。我怀疑您需要缩进while以将所有代码带入函数中。仍然没有 MRE;请再次阅读我的第一条评论。