我是一个蟒蛇新手。
我有一个python方法以递归方式返回列表(上一个是字符串的字典,而s只是一个包含在上一个字典中的字符串)
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
return [] if (s is None) else path(previous, previous[s]) + [s]
这个我相信应该返回相同的结果
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
path(previous, previous[s]) + [s]
我期待功能明智,这两种方法完全相同,只是第一种方法更加简洁。但是,当我运行第二种方法时,
我收到以下错误:
“TypeError:+不支持的操作数类型+:'NoneType'和'list'”
我在这里做错了什么?
答案 0 :(得分:4)
您在第二种方法的 else 分支中错过了return
语句:
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
return path(previous, previous[s]) + [s]
第一种方法使用三元运算符,它的返回值(两个中的一个)由return
语句返回,因此,第二种方法需要一个{两个分支中的{1}}语句。