假设我有一个这样的发电机:
def a(data):
for val in data:
yield val
并且说我想将此生成器包装在另一个生成器b
中,该生成器仅从a
中产生一些值,具体取决于它们的值。 b
应该能够将从呼叫者发回的值转发到a
。我知道,将生成器包装在另一个生成器中的最新方法是使用yield from
语句。类似于:
def b(data):
yield from val = a(data) if val == "foo"
我知道语法是错误的(只是为了理解这个想法),所以我想知道是否存在使yield from
与条件语句一起使用的正确方法。还是我应该使用其他构造?
正如您所说,yield from
仅用于您要将包装的生成器中的所有内容都传递过来的情况。如果您不希望这样做,则需要手动迭代包装的生成器并执行所需的操作:
由于似乎无法将条件合并到a
中,所以我通过手动处理我关心的案例解决了这个问题。这就是我最终得到的结果: