Python中是否有一个库函数可以将一个生成器函数转换成返回列表的函数?
- 论坛
- Python中是否有一个库函数可以将一个生成器函数转换成返回列表的函数?
8 浏览
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)