python惯用python for循环if else语句

时间:2015-11-12 18:36:34

标签: python if-statement for-loop idiomatic

如何在惯用的Python else循环中使用for语句?没有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]

1 个答案:

答案 0 :(得分:12)

你很接近,你只需要将三元组移动到列表理解中你创建值的部分。

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