Python中的惯用语:for循环if else语句

8

如何在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]
1个回答

13

你离成功很近了,只需要把三元运算符移到列表推导式中创建值的部分即可。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接