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

Python如何从args可变参数筛选非负值且排除字符串类型元素?

问题原因
  • 未过滤字符串类型元素:原有逻辑直接对所有入参执行int(p)做数值判断,格式为数字的字符串(比如"4")可以成功转换为int通过校验,导致被错误保留
  • 误用filter(None, ans)处理结果:该操作会自动过滤所有布尔值为假的元素,0、False本身布尔值为假,因此被错误移除
修复后代码
def filter_positives_from_args(*args) -> list:
    return [p for p in args if not isinstance(p, str) and int(p) >= 0]
逻辑说明
  • 新增not isinstance(p, str)判断:直接排除所有字符串类型的入参,不管内容是否为数字,满足题目要求
  • 保留int(p) >= 0的数值判断:bool类型的False转int为0、True转int为1,符合非负筛选规则
  • 移除错误的filter操作:直接返回列表推导式的结果即可,不会额外过滤0、False这类符合要求的元素

内容的提问来源于stack exchange,提问作者PTP_XX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:57:04