如何打印发电机的输出

时间:2016-01-14 15:39:10

标签: python generator

当我运行代码时,我得到以下输出

如何打印输出?

static void Main(string[] args)
{
    // start all async tasks in parallel.
    var tasks = GetEvents().Select(GetEventDetailsAsync);

    // wait for them all to complete. normally you should use await instead of Wait,
    // but you can't because you're in the main method of a console app.
    Task.WhenAll(task).Wait();
}

static IEnumerable<Event> GetEvents()
{
    // build a list of whatever metadata is needed to do your async work.
    // do NOT do any actual async work here.
}

async static Task<EventDetailed> GetEventDetailsAsync(Event e)
{
    // do all async work here, use await as needed,
    // but only for one event (no loops).
}

2 个答案:

答案 0 :(得分:1)

一般来说:

print(list(firstn(n)))

确保您的发电机不是无限的。如果您不确定,请使用以下内容:

import itertools as it

print(list(it.islice(firstn(n), 100)))

打印前100个元素。

答案 1 :(得分:0)

有不同的方法,但基本上你必须遍历迭代器。最简单的方法可能是使用列表理解:

print(list(firstn(3)))

但是如果你希望你能写一个for循环来做到这一点(每行得到一个元素):

for e in firstn(3):
    print(e)
然而,应该知道迭代生成器会消耗它并且如果你没有检索新生成器的方法(例如,如果你将生成器作为函数调用的参数),你将不得不存储值 - 数组中的fx:

l = list(firstn(3))

for e in l:
    print(e)

for e in l:
    do_something(e)