Python中是否有一个库函数可以将一个生成器函数转换成返回列表的函数?

8 浏览
0 Comments

Python中是否有一个库函数可以将一个生成器函数转换成返回列表的函数?

有很多时候,我认为生成器的风格比返回列表更直接,例如:

def foo(input_array):
    for x in input_array:
        yield processed(x)

def bar(input_array):
    accumulator = []
    for x in input_array:
        accumulator.append(processed(x))
    return accumulator

(好吧,如果真的那么简单,我会写map,但你明白我的意思:生成器版本更清晰)。然而,并不总是希望生成器的返回类型。有没有内置的装饰器,我可以用来将foo转换成返回列表或元组的函数?我自己会这样写:

import functools
def transform_return_value(transformer):
    def inner(f):
        @functools.wraps(f)
        def new_f(*argv, **kwargs):
            return transformer(f(*argv, **kwargs))
        return new_f
    return inner
@transform_return_value(list)
def foo(input_array):
    for x in input_array:
        yield processed(x)

0