我试图排除返回 None 的理解案例。 以下实现了它,但导致调用该函数两次!!!
>>> def func(x):
... if x>10:
... return None
... else:
... return x*2
...
>>> result1=[func(x) for x in l if func(x) is not None]
>>> result1
[4, 8, 14, 6]
出路在哪里?
请您参考如下方法:
result1[:] = [x for x in map(func, l) if x is not None]
在 Python 2.x 上使用 itertools.imap
注意:filter(None, map(func, l)) 通常可以工作,但也会删除 0(因为它是被认为是空的)
