我有发电机
def not_nones(some_iterable):
for item in some_iterable:
if item is not None:
yield item
但是因为“扁平比嵌套好”,我想在一行中做这件事,比如:
def not_nones(some_iterable):
for item in some_iterable:
yield item if item is not None else None
但这实际上会使 None 成为生成器的一个项目。 有没有可能在一行中什么都不产生?
请您参考如下方法:
你可以只返回一个生成器表达式:
def not_nones(iterable):
return (item for item in iterable if item is not None)
或者对于真正的单行:
not_nones = lambda it: (i for i in it if i is not None)
在这一点上,它越来越多地进入代码高尔夫领域。
但实际上,您当前的代码并没有太大问题;它以合理的方式做它需要做的事情。你的代码就是我在这种情况下会写的代码。
