有没有办法在使用时跳过for循环的迭代
[x if cond else pass for x in seq]
尝试时出现语法错误。
Output >>> File "<ipython-input-122-a943adcf1b68>", line 1
test = [pass if isinstance(x, float) else x for x in test_list]
^
SyntaxError: invalid syntax
您将条件表达式与循环过滤器混淆了。若要筛选列表推导式中的元素,请将if
放在它过滤的for
循环之后:
[x for x in seq if cond]
条件表达式(expr1 if cond else expr2
(必须始终产生一个值,因为它是一个表达式。pass
不是一个表达,它是一个陈述,只能自己使用。
对于您的具体示例,您希望选择值不是浮点数的元素,您希望在过滤器测试中使用not
:
[x for x in test_list if not isinstance(x, float)]