接听电话
set(self.oid_to_path(oid, entries_parents) for oid in modified_by_one_parent_oids)
这样可行,但如果函数返回None
None
添加到列表中
将其修改为
set(self.oid_to_path(oid, entries_parents) for oid in modified_by_one_parent_oids if None != self.oid_to_path(oid, entries_parents))
也可以,没有None
s。
但是这有两次调用函数的缺点。如何只调用一次,并使用一些记忆代替?
答案 0 :(得分:3)
对生成器表达式使用set comprehension ...
g = (self.oid_to_path(oid, entries_parents) for oid in modified_by_one_parent_oids)
result = {el for el in g if el is not None}
请注意,您的代码中实际上没有列表理解。您正在使用生成器表达式调用set
构造函数,这可以更简单 - 使用集合理解,如上所示。