在 Python 列表推导式中缓存值

2024-02-29

我正在使用以下列表理解:

resources = [obj.get("file") for obj in iterator if obj.get("file") != None]

有没有办法“缓存”obj.get("file")当它在 if 语句中检查时,这样就不必调用get当它生成返回列表时再次在 obj 上?


resources = filter(None, (obj.get("file") for obj in iterator))

请参阅文档filter http://docs.python.org/library/functions.html#filter了解如何提供您自己的评估函数。通过Nonefor 函数(如上所述)过滤掉所有不正确的值。

如果 obj.get() 返回一个有奇怪的对象__nonzero__方法那么你需要通过lambda obj: obj != None得到与原始代码完全相同的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 列表推导式中缓存值 的相关文章

随机推荐