2015-11-12 29 views
7

如何在一个惯用的Python for循环中使用else语句?而不else我可以写例如:python惯用python for循环if 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)]