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

标签 python generator flat

我有发电机

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/

相关文章:

haskell - 快速检查,使用结果取决于其参数的函数定义任意实例

python - flask : TypeError: 'str' object is not callable while validation using Flask-WTF

python - PySide + QGraphicsScene 仅显示为黑色

python - Google Checkout 通知 API Python 示例

带有 SQL 语法的 PHP 简单文本数据库

qt - 平面 QPushButton,背景颜色不起作用

delphi - delphi中的平面文件

python - 将 qtreeview 项目设置为可通过上下文菜单编辑并自动将其设置回禁用状态?

python - 在递归代码中用 return 替换 Yield

Python 异步回调和生成器