Не Могу Вернуть Несколько Значений В Python

#python #return-value

Вопрос:

Я пытаюсь вернуть кортеж из функции , но он возвращает только первый элемент , Когда я посмотрел в Интернете, все ресурсы сказали, что все сделано так, как я это сделал, есть какие-нибудь мысли ? мой код :

 def depthFirst(initialState):  exploredCount = 1  visitedCount = 0  frontier=[]  frontier.append(initialState)  explored=[]  while len(frontier) gt; 0:  state=frontier.pop()  explored.append(state)  visitedCount = visitedCount   1  if state in goalStates:  return state  nextStates=getNextStates(state)  for i in range(len(nextStates)):  if not nextStates[i] in frontier and not nextStates[i] in explored:  frontier.append(nextStates[i])  exploredCount = exploredCount   1   return [initialState , exploredCount , visitedCount]   

Я вызываю функцию следующим образом :

 ans = depthFirst(state)  arr = ans[0]  explored = arr[1]  visited = arr[2]  

Комментарии:

1. Итак, какова начальная стоимость state ? Что же getNextStates делать?

Ответ №1:

Ваша проблема связана с частью функции ниже:

 if state in goalStates:  return state  

Вышесказанное выполняется до того, как будет достигнута последняя строка функции. Поэтому функция работает до первого return (как показано выше) и возвращает только state , а не список [initialState , exploredCount , visitedCount]

Комментарии:

1. В этом и была проблема , глупый ха-ха-ха , спасибо, приятель

Ответ №2:

Он возвращается нормально, ваш первый элемент не имеет индекса 1

 ans = depthFirst(state)  # should work fine print(ans[0]) print(ans[1]) print(ans[2])  arr = ans[0] explored = arr[1] # arr doesn't have index 1 visited = arr[2]   

РЕДАКТИРОВАТЬ: это при условии, что вы достигнете окончательного оператора возврата и не вернетесь раньше, как предлагается в другом ответе.