我正在使用以下列表理解:
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了解如何提供您自己的评估函数。通过None
for 函数(如上所述)过滤掉所有不正确的值。
如果 obj.get() 返回一个有奇怪的对象__nonzero__
方法那么你需要通过lambda obj: obj != None
得到与原始代码完全相同的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)