Я работаю над некоторыми алгоритмами поиска пути, и нижеприведенный фрагмент должен сделать массив узлов на пути от цели до начала. Он отлично работает, когда есть путь от цели к началу. Но когда нет пути от начала до цели, цикл while никогда не запускается, и результат возвращается как []
(что верно).Почему пустой список становится NoneType при возврате?
def path(goal, pathToParentLookup):
currentNode = goal
result = []
while(currentNode in pathToParentLookup):
currentNode = pathToParentLookup[currentNode]
result.append(currentNode)
return result
#bidirectional search from start to goal finds the mid point of "center"
start_path = path(center, pathBack_start).reverse()
goal_path = path(center, pathBack_goal)
return start_path + [center] + goal_path
Однако я получаю эту ошибку:
<ipython-input-14-ca3cb26b31ce> in bidirectional_search(graph, start, goal, searchMethod)
46 start_path = path(center, pathBack_start).reverse()
47 goal_path = path(center, pathBack_goal)
---> 48 return start_path + [center] + goal_path
49
50
TypeError: can only concatenate list (not "NoneType") to list
Или же, так как стоимость копии компенсируется дешевизной нарезки на основе синтаксиса (по сравнению с более высокой стоимостью вызова метода), вы можете сохранить его в один вкладыше с 'start_path = path (center, pathBack_start) [:: - 1]' – ShadowRanger
Я чувствую себя глупо, я пропустил это. благодаря –