有什么方法可以将if语句更改为一个内衬吗?
`
def A(N1,N2,dict):
p = N2
if N1 == N2:
return False
while N1 != p:
p = dict.get(p,False)
if p == False:
return False
return True
`
类似
`
def A(N1,N2,dict):
p = N2
return False if N1==N2 else continue
while N1 != p:
p = dict.get(p,False)
return False else continue
return True
`
答案 0 :(得分:0)
如果您需要oneliner,为什么不只写一行呢?
if N2==N1: return False
答案 1 :(得分:0)
如果您想要一个解决方案,那就是。不要误会我的意思,这是 NOT 不错的Python。您应该编写易于理解的代码。但这有效。
A = lambda N1,N2,dict: False if not dict.get(N2, None) else (True if dict.get(N2, None) == N1 else A(N1, dict.get(N2, None), dict))
此外,应归功于应归功的功劳,从本质上来说,这是对同一作业的另一个问题的this answer重构。
进一步优化:
A = lambda N1,N2,dict: (not (not dict.get(N2, None) ) ) and ( dict.get(N2, None) == N1 or A(N1, dict.get(N2, None), dict) )