假设我的操作费用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
,是否有任何方法可以通过列表理解来保存其值?
使用海象:
[cache for i in range(LARGE_NUMBER) if check(cache := expensive(i))]