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

Python混合类型列表推导式过滤问题求解

问题解决:过滤列表保留指定数字和所有字符串

错误原因

你代码里用了位运算符|(按位或)和&(按位与),这类运算符不会触发短路求值——也就是说,不管前面的条件是否成立,后面的表达式都会被执行。当遍历到字符串元素时,x>2会被强制执行,自然就抛出了字符串和整数无法比较的类型错误。

修正方案

把位运算符换成逻辑运算符or和and,逻辑运算符会短路:如果isinstance(x, str)为True,后面的条件直接跳过,不会执行x>2的判断。

修正后的代码:

my_list = [1, 2, 3, 'hello', 'world']
filtered_list = [x for x in my_list if isinstance(x, str) or (isinstance(x, int) and x > 2)]

执行结果:

[3, 'hello', 'world']

补充说明

如果需要兼容浮点数,可以把isinstance(x, int)改成isinstance(x, (int, float)),确保所有数值类型都能被正确判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:23:08