2015-11-12 9 views
7

慣用のPython forループでelse文を使用するにはどうすればよいですか? elseがなければ私は、例えばを書くことができます:Pythonの慣用句python for else else文

res = [i for i in [1,2,3,4,5] if i < 4] 

結果は次のとおりです。[1, 2, 3]

上記のコードの標準形は次のとおりです。

res = [] 
for i in [1,2,3,4,5]: 
    if i < 4: 
     res.append(i) 

結果は慣用形と同じです:[1, 2, 3]

これが欲しい:

res = [i for i in [1,2,3,4,5] if i < 4 else 0] 

SyntaxError: invalid syntaxとなります。結果は次のようになります。[1, 2, 3, 0, 0] この通常のコードは次のとおりです。

res = [] 
for i in [1,2,3,4,5]: 
    if i < 4: 
     res.append(i) 
    else: 
     res.append(0) 

結果は次のとおりです。[1, 2, 3, 0, 0]

答えて

11

あなたが接近していた、あなただけのあなたのリストの内包の一部に三元を移動する必要があります価値を創造しています。

res = [i if i < 4 else 0 for i in range(1,6)]