为了账号安全,请及时绑定邮箱和手机立即绑定

迭代多个生成器

迭代多个生成器

繁星coding 2021-04-05 08:54:47
我有多个生成器函数,这些函数可生成附加到列表中的对象。有很多重复的代码,是否有可能将其最小化(对于Python 3.5+)?发电机:def gen1(obj):    if obj == 'something':        yield ValueError()def gen2(obj):    if obj == 'else':        yield ValueError()value_errors =[]工作版本,但重复的代码:for exc in gen1(obj):    if isinstance(exc, ValueError):        value_errors.append(exc)for exc in gen2(obj):    if isinstance(exc, ValueError):        value_errors.append(exc)无法正常工作,但没有重复的代码:generators = [    gen1(obj),    gen2(obj)]for yielded in generators:    if isInstance(yielded, ValueError):        value_errors.append(yielded))这是行不通的,因为它会产生生成器而不是生成器的生成值。有可能解决这个问题吗?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

采用:


for yielded in generators:

    for _yielded in yielded:

        if isinstance(_yielded, ValueError):

            value_errors.append(_yielded)


查看完整回答
反对 回复 2021-04-09
?
守着一只汪

TA贡献1872条经验 获得超3个赞

[obj for generator in generators for obj in generator]


查看完整回答
反对 回复 2021-04-09
  • 3 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信