2017-02-09 76 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返回相同值。簡單地返回測試結果是等效的(並且更高效)。