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

Python中基于指定列表过滤类对象列表并排序的高效实现方法

可以通过集合加速过滤判断+链式处理实现需求,该方案时间复杂度最优,代码简洁易维护:

实现代码

# 把待删除列表转成集合,in查询时间复杂度从O(n)降到O(1),数据量越大优势越明显
drop_set = set(to_be_dropped_lst)

# 一次性完成过滤、按num升序排序、提取col_name属性
res = [
    person.col_name
    for person in sorted(
        (p for p in main_lst if p.col_name not in drop_set),
        key=lambda x: x.num
    )
]

print(res) # 输出结果:['E', 'D', 'A']

方案说明

  • 过滤环节使用生成器表达式,不会产生额外的中间列表,内存占用更低,适合处理大规模数据。
  • 整体时间复杂度为O(n log n),由排序环节决定,是该需求下的最优时间复杂度。
  • 排序规则可灵活调整,如需倒序排序只需在sorted方法中添加reverse=True参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:54:03