迭代多个生成器

我有多个生成器函数,这些函数可生成附加到列表中的对象。有很多重复的代码,是否有可能将其最小化(对于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)

)

这是行不通的,因为它会产生生成器而不是生成器的生成值。有可能解决这个问题吗?


繁星coding
浏览 164回答 3
3回答

GCT1015

采用:for yielded in generators:    for _yielded in yielded:        if isinstance(_yielded, ValueError):            value_errors.append(_yielded)

守着一只汪

[obj for generator in generators for obj in generator]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python