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

Python如何根据另一列表中的指定值过滤目标列表

列表过滤需求实现方案

现有代码问题说明

  • 逻辑反向:当前写的判断条件zone == 36仅会保留等于整数36的元素,和「过滤掉排除列表所有元素」的需求完全相反
  • 类型不匹配:VAV_ID_list中所有元素都是字符串类型,和整数36做相等判断永远不成立,运行后只会得到空列表

可行实现方案

基础版(小数据量场景直接用)

直接在列表推导式中判断元素不在排除列表中即可:

VAV_ID_list = ['36','38','21','29','31','25','9','13','14','19','30','8','26','6','34','11','12028','20','27','15','12032','23','16','24','37','39','12033','10']
VAV_ID_exclude_list = ['36','38','21','29','31','25','9','13','14','19','30','8','26','6']

filtered_VAV_ID_list = [zone for zone in VAV_ID_list if zone not in VAV_ID_exclude_list]
print(filtered_VAV_ID_list)

运行后输出结果为:
['34', '11', '12028', '20', '27', '15', '12032', '23', '16', '24', '37', '39', '12033', '10']

优化版(大数据量场景性能更高)

如果排除列表元素数量较多,可以先将其转换为集合,集合的in查询时间复杂度为O(1),远高于列表的O(n):

VAV_ID_list = ['36','38','21','29','31','25','9','13','14','19','30','8','26','6','34','11','12028','20','27','15','12032','23','16','24','37','39','12033','10']
VAV_ID_exclude_list = ['36','38','21','29','31','25','9','13','14','19','30','8','26','6']

exclude_set = set(VAV_ID_exclude_list)
filtered_VAV_ID_list = [zone for zone in VAV_ID_list if zone not in exclude_set]
print(filtered_VAV_ID_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:06:10