如果是其他Python的一行

时间:2017-04-05 14:48:07

标签: python if-statement

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

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

2 个答案:

答案 0 :(得分:1)

你只需要

[ x == 3 for x in numbers ]

这将迭代numbers中的每个元素,并将其与3进行比较,为每个元素返回TrueFalse。 (请注意,当您仅返回if...elseTrue时,无需使用False构造。==运算符已经执行此操作。 )

例如:

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

您的语法不正确,因为在列表生成器中的if循环之后的for语句用于过滤元素。例如:

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

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

答案 1 :(得分:0)

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

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