Ric*_*ann 1 python generator flat
我有发电机像
def not_nones(some_iterable):
for item in some_iterable:
if item is not None:
yield item
Run Code Online (Sandbox Code Playgroud)
但由于"扁平比嵌套好",我想在一行中做到这一点,如:
def not_nones(some_iterable):
for item in some_iterable:
yield item if item is not None else None
Run Code Online (Sandbox Code Playgroud)
但这实际上会None成为发电机的一个项目.是否有可能在单行中不产生任何东西?
你可以只返回一个生成器表达式:
def not_nones(iterable):
return (item for item in iterable if item is not None)
Run Code Online (Sandbox Code Playgroud)
或者对于一个真正的单行:
not_nones = lambda it: (i for i in it if i is not None)
Run Code Online (Sandbox Code Playgroud)
在这一点上,它越来越多地进入代码高尔夫领域.
但实际上,您当前的代码没有太大问题; 它以合理的方式做它需要做的事情.您的代码就是我在这种情况下编写的代码.