【发布时间】:2018-07-14 13:27:32
【问题描述】:
我有一个列表解析,它调用一个可能返回 None 的函数。
>>> f = lambda x: x if x < 3 else None
>>> l = [f(x) for x in [1,2,3,4]]
[1, 2, None, None]
我想要上面的列表理解,没有“无”条目。
在不产生额外开销并保持列表理解效率的同时,执行以下操作的更有效方法是什么?
>>> filter(None, [f(x) for x in [1,2,3,4]])
[1, 2]
【问题讨论】:
-
[i for i in [1,2,3,4] if i<3]是不是一定要用f函数? -
@vaultah 抱歉。需要明确的是,我对 Python 2.7 解决方案很感兴趣。已编辑。
-
@AlbinPaul - 是的,调用 f(x) 是必要的。
标签: python python-2.7 list list-comprehension