Python函数无法返回多个值?深度优先搜索函数仅返回首个元素问题求助
问题原因
你的函数存在两个返回值结构不一致的分支:
- 搜索过程中命中目标状态(
state in goalStates判断为真)时,函数直接返回单个值state,没有包装为列表 - 仅当遍历完所有节点未找到目标时,函数才会返回三元素列表
[initialState , exploredCount , visitedCount]
你调用时默认所有返回结果都是三元素列表,直接执行ans[0]。如果函数命中了找到目标的分支,返回的state本身是可迭代对象(比如列表、字符串、元组)时,ans[0]实际取的是state的第一个元素,这就是你只能拿到第一个元素的原因。
修复方案
优先选择统一返回结构的方案,把命中目标时的返回逻辑也修改为和未找到时结构一致的列表:
# 把原代码中的 if state in goalStates: return state # 修改为 if state in goalStates: return [state, exploredCount, visitedCount]
修改后调用逻辑可以保持不变,不管是否找到目标,返回结果都是三元素列表,不会再出现取值异常。
内容的提问来源于stack exchange,提问作者h0sny
相关产品推荐
相关产品推荐

