列表推导式中if-else必须作为三元表达式置于for左侧,如[x if x>=0 else 0 for x in numbers];仅if过滤则置于for右侧,如[x for x in numbers if x>0]。
在列表推导式中同时使用 if 和 else,必须把整个条件表达式写在前面(即“值部分”),不能把 if 放在后面。这是初学者最容易出错的地方。
格式为: [value_if_true if condition else value_if_false for it
if...else)是整体作为“生成什么值”的逻辑,属于表达式,必须出现在 for 左侧[x for x in lst if x > 0 else 0] —— 这是语法错误纯过滤用法,if 写在 for 后面,不带 else
[expr for item in iterable if condition]
if-else 必须成对出现,且只能出现在“值生成位置”,即 for 左边if-else 又在右侧加 if 过滤(语法不允许)