返回后是否有继续的方法?

时间:2019-10-08 15:50:32

标签: python

有什么方法可以将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

`

2 个答案:

答案 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) )