2017-02-09 5 views
0

if文を1行で最適化しようとしましたが、シェルで正しく動作するように見えますが、テストすると何も返されません。あなたは何か奇妙なことが見えますか?この関数の目的は、if文を単一のものに置き換えることです。 return文、それが私のしたことです。これは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

なぜ 'return len(L1)== len(L2)'?これは既にTrueまたはFalseで返されたブール式です:)ただそれを返します –

+0

何も返さないコードがあれば、それはあなたの質問で人々がそれを見ることができるようにします。 –

答えて

5

これは間違いありませんが、複雑にする必要はありません。ここif -statementを使用する必要はありません

return len(L1) == len(L2) 

:同等ですlen(L1) == len(L2)の結果はすでにブール値です。そのブール値がTrueの場合はTrue、それ以外の場合はFalseとなります。テストの結果を返すだけで、同等の効果が得られます。

関連する問題