【问题标题】:Conditionally yield a generator in python [duplicate]在python中有条件地产生一个生成器[重复]
【发布时间】:2018-06-22 09:18:08
【问题描述】:

假设我有这个代码:

def f(data, all_at_once):
    if all_at_once:
        return data
    else:
        yield from data

f([1,2,3], True)

f 总是返回一个生成器,不管all_at_once 的值如何。如何获得有条件返回生成器的函数?

【问题讨论】:

  • yield from data 更改为return iter(data)
  • yield 作为构造的存在将函数变成了各种生成器。
  • 谢谢。最终我想从没有 iter 方法的 Queue 对象中产生对象。

标签: python yield


【解决方案1】:

这是一个开始。也许可以通过lambda来改进

def gen(data):
    yield from data

def f(data, all_at_once):
    if all_at_once:
        return data
    return gen(data)

f([1,2,3], True)

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 2012-10-07
    • 2022-01-18
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多