1

接听电话

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))

也可以,没有Nones。

然而,这有两次调用该函数的缺点。如何只调用一次,然后使用一些记忆?

4

1 回答 1

3

在生成器表达式上使用集合推导...

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使用生成器表达式调用构造函数,这可以更简单地完成 - 使用集合推导,如上所示。

于 2013-01-01T19:11:56.047 回答