Kai*_*Kai 5 python list-comprehension
我正在使用以下列表理解:
resources = [obj.get("file") for obj in iterator if obj.get("file") != None]
Run Code Online (Sandbox Code Playgroud)
有没有办法"缓存" obj.get("file")在if语句中检查它的值,以便它get在生成返回列表时不必再次调用obj?
resources = filter(None, (obj.get("file") for obj in iterator))
Run Code Online (Sandbox Code Playgroud)
有关如何提供自己的评估功能,请参阅过滤器文档.传递None函数(如上所述)过滤掉所有不正确的值.
如果obj.get()返回一个具有奇怪__nonzero__方法的对象,那么您需要传递lambda obj: obj != None以获得与原始代码完全相同的结果.
如果你想继续使用list/iterator comprehensions而不是使用filter你可以简单地使用:
resources = [file_obj
for file_obj in (obj.get("file") for obj in iterator)
if file_obj is not None]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |