Skip to main content
 首页 » 编程设计

python之在 python 的一行中有条件地不产生任何结果

2025年05月04日14artech

我有发电机

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) 

在这一点上,它越来越多地进入代码高尔夫领域。

但实际上,您当前的代码并没有太大问题;它以合理的方式做它需要做的事情。你的代码就是我在这种情况下会写的代码。