You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:39:03