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