Python 一行,否则



下面的代码中有什么错误的语法? 这条线不应该工作吗?有人可以解释为什么它不起作用以及正确的语法是什么。

return [ True for x in numbers if x == 3 else False ]

你只需要

[ x == 3 for x in numbers ]

这将遍历numbers中的每个元素,并将其与3进行比较,返回每个元素的TrueFalse。(请注意,当您只返回TrueFalse时,无需使用 if...else 构造。==运算符已经这样做了。

例如:

>>> numbers = [ 1, 2, 3, 4, 5 ]
>>> [ x == 3 for x in numbers ]
[False, False, True, False, False]

语法不正确,因为列表生成器中 for 循环之后if 语句用于筛选出元素。例如:

>>> [ True for x in numbers if x == 3 ]
[True]

在这种情况下,不符合条件if x == 3元素根本不包含在输出中。

如果您需要在列表生成器中使用三元运算符:

[ True if x == 3 else False for x in numbers ]

相关内容

最新更新