列表理解中的缓存变量

问题描述 投票:0回答:1

假设我的操作费用expensive(x: int) -> int,并且清单理解如下:

# expensive(x: int) -> int
# check(x: int) -> bool
[expensive(i) for i in range(LARGE_NUMBER) if check(expensive(i))]

如果我想避免每个expensive(i)都运行两次i,是否有任何方法可以通过列表理解来保存其值?

python performance list-comprehension dictionary-comprehension set-comprehension
1个回答
1
投票

使用海象:

[cache for i in range(LARGE_NUMBER) if check(cache := expensive(i))]
© www.soinside.com 2019 - 2024. All rights reserved.