Python列表推导式如何省略不符合条件的元素而非使用占位值
你可以通过列表推导式的末尾筛选条件过滤掉不需要的元素,无需在三元表达式中生成占位值,修改后的代码如下:
new_list = [ num * 0.99 if num > 40 else num * 2 for num in range(50) if num > 30 ] print(new_list)
逻辑说明
- 列表推导式末尾新增
if num > 30筛选规则:所有小于等于30的数值会被直接排除,不会进入前面的表达式计算,自然不会生成多余的"delete"占位值 - 前面的三元表达式仅处理符合筛选规则的数值:大于40的数值乘以0.99,剩余31~40区间的数值乘以2,不需要多余的else分支
- 你原有代码里的
20 < num > 30属于冗余写法,等价于num > 30,如果实际业务有其他边界要求,直接调整末尾的筛选条件即可
运行上述代码输出结果和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Morris Barr
相关产品推荐
相关产品推荐

