2017-02-09 74 views
0

我试着在一行中优化if语句,它似乎在我的shell中正常工作,但是当我测试它时什么也不返回。你觉得有些奇怪吗?这个函数的目标是用一个单词替换if语句。返回声明,那就是我所做的。这是如果陈述很好地表达?

这是原来的功能:

def same_length(L1, L2): 
    '''(list, list) -> bool 

    Return True if and only if L1 and L2 contain the same number of elements. 
    ''' 

    if len(L1) == len(L2): 
     return True 
    else: 
     return False 

这是我的优化:

return True if len(L1) == len(L2) else False # Do you see something strange here? 

这是正确的吗?

+4

为什么不只是'返回len(L1)== len(L2)'这已经是一个布尔表达式的结果是True或False :)只是返回它 –

+0

如果你有一些代码没有返回任何东西,它在你的问题中,让人们可以看看它。 –

回答

5

这是正确的,但你不必如此复杂。它等效于:

return len(L1) == len(L2) 

没有必要在这里使用if语句来:的len(L1) == len(L2)的结果已经是一个布尔值。如果该布尔值为True,则返回TrueFalse返回相同值。简单地返回测试结果是等效的(并且更高效)。