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

如何避免在推导式中添加函数生成的None值且仅调用一次函数

优化字典/列表推导式避免重复调用函数

原字典推导式中,每个符合条件的bar会被两次调用foo(bar),当foo是耗时操作时会影响效率:

my_dict = {bar: foo(bar) for bar in some_range if foo(bar) is not None}

要实现仅调用一次foo(bar),同时不生成含None的中间结构,可以用生成器表达式预计算结果,再过滤并构建目标结构:

字典推导式优化写法

my_dict = {bar: res for bar, res in ((b, foo(b)) for b in some_range) if res is not None}

列表推导式对应优化写法

如果是列表推导式场景,逻辑完全一致:

my_list = [res for bar, res in ((b, foo(b)) for b in some_range) if res is not None]

核心逻辑是:先通过生成器((b, foo(b)) for b in some_range)遍历some_range,每个元素仅调用一次foo并得到(bar, 计算结果)的元组;后续推导式直接使用预计算的结果做判断,符合条件的才加入最终的字典或列表,全程无冗余计算和无效中间结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:42:33