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

sなしでも動作しNoneます。

ただし、これには関数を2回呼び出すという欠点があります。一度だけ呼び出して、代わりにメモ化を使用するにはどうすればよいですか?

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 に答える