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

如何不使用循环提取listA中存在于listB的id值?

提取列表中符合条件的ID(无需显式循环)

给定数据:

listA = [{"id":"5","age":"44"},{"id":"8","age":"34"},{"id":"15","age":"84"}]
listB = ["9","1","7","5","10","15","20"]

预期结果:

listResult = ["5","15"]

方案1:集合+列表推导式

先把listB转为集合(大幅提升成员判断效率),再用列表推导式完成筛选:

id_set = set(listB)
listResult = [item["id"] for item in listA if item["id"] in id_set]

方案2:函数式编程(filter + map)

如果偏好函数式风格,可通过filter过滤符合条件的对象,再用map提取目标ID:

id_set = set(listB)
listResult = list(map(lambda x: x["id"], filter(lambda x: x["id"] in id_set, listA)))

说明:两种方案都没有编写显式的for/while循环语句,满足需求。将listB转为集合是核心优化——列表的in操作时间复杂度为O(n),集合则是O(1),数据量越大,效率差异越显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:11