Python中的折叠生成器

时间:2015-02-02 15:53:57

标签: python python-2.7 generator

所以我有这样的功能:

def demo_range(limit):
    value = 0
    while value < limit:
        yield value
        value = value + 1

和这个

def demo_generator_to_list(generator):
    return [x for x in range(generator)]

现在在demo_generator_to_list(generator)我需要填写一些代码来将生成器折叠为:

[0,1,2,3]

demo_generator_to_list(demo_range(4))

1 个答案:

答案 0 :(得分:2)

只需将生成器传递给list()来电:

def demo_generator_to_list(generator):
    return list(generator)

list()函数将迭代生成器并将所有结果添加到新的列表对象。

你仍然可以使用列表理解,但是你不能使用range()

return [x for x in generator]

这比使用list()没有优势;它只是慢了。