我對lambda表達式與內部列表理解操作有所懷疑。Python lambda與列表理解
在下面的代碼中,lambda會每次爲每個項目實例化一個列表?
def _find_items_not_present_in_store(self, store_today, store_yesterday):
# finding what items are not in the store anymore
items_not_in_store_anymore = filter(lambda item1: item1.item_id not in
[item2.item_id for item2 in store_today.store_items],
store_yesterday)
return items_not_in_store_anymore
會更好,有這個名單
[item2.item_id for item2 in store.store_items]
實例化的lambda表達式之外?
我找不到任何有關它的文檔。
這個函數返回一個生成器可能是一個不錯的改進。 –
如果不考慮如何使用這些結果,就無法知道它。由於原始代碼確實返回了一個列表,因此必須假定代碼可能不止一次地迭代它。否則,對於這個的大多數用途,我認爲一個「集合」比一個生成器更有用 - 但他們,「商店項目」必須是可散列的。 – jsbueno