跳过单行 for 循环语句中的元素



有没有办法在使用时跳过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)]

最新更新