Python 列表理解:for 和 if 语句?

Python List Comprehension: for and if statement?

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

1]正确输出

forbefore if

newlist1 = [x for x in fruits if "a" in x]
              ^^^             ^^

2] 错误 即使 forif[ 之前=41=]如上语句

newlist2 = [x for x in range(10) if x != 5 else 6]
              ^^^                ^^        ^^^^

3] 正确输出

但是这里 ifelsebefore for

newlist3 = [x if x != 5 else 6 for x in range(10)]
              ^^        ^^^^   ^^^   

我可以知道为什么语句 3 渲染输出而语句 2 抛出错误吗?

在您的第二个示例中,if x != 5 else 6 不是 returns true 或 false 的过滤条件。这是一个不完整的语句 <val_1> if <condition> else <val_2>,它没有定义 。 没有 'else' 部分它是一个过滤器。 (example_1)

在第三个示例中,您的条件表达式已完成 x if x != 5 else 6。 但它 returns x 的值并且不过滤任何东西。