我有发电机
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)
在这一点上,它越来越多地进入代码高尔夫领域。
但实际上,您当前的代码并没有太大问题;它以合理的方式做它需要做的事情。你的代码就是我在这种情况下会写的代码。
关于python - 在 python 的一行中有条件地不产生任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27192651/