下面的代码中有什么错误的语法? 这条线不应该工作吗?有人可以解释为什么它不起作用以及正确的语法是什么。
return [ True for x in numbers if x == 3 else False ]
你只需要
[ x == 3 for x in numbers ]
这将遍历numbers
中的每个元素,并将其与3
进行比较,返回每个元素的True
或False
。(请注意,当您只返回True
和False
时,无需使用 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 ]