Python中如何在列表推导式内检查函数返回值条件
你提到的需求完全可以通过列表推导式实现,甚至可以避免两次调用目标函数、减少不必要的性能损耗,具体分两种常见实现方案:
方案1:Python 3.8及以上版本(推荐)
使用海象运算符:=缓存函数返回值,仅调用一次d(x),先判断条件再存入符合要求的结果:
number_list = [res for x in range(1, 10001) if (res := d(x)) < 10000]
方案2:Python 3.8以下版本兼容写法
通过单层嵌套遍历的方式缓存函数返回值,同样只会执行一次d(x):
number_list = [res for x in range(1, 10001) for res in [d(x)] if res < 10000]
额外说明:你给出的参考写法本身也可以正常运行,只是会对每个x执行两次d(x),如果d(x)是计算成本较高的函数,更推荐使用上面两种优化写法。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

