【问题标题】:How to print the output of a generator [duplicate]如何打印生成器的输出[重复]
【发布时间】:2016-04-20 00:21:21
【问题描述】:

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

如何打印输出?

def firstn(n):
    num=0
    while num < n:
        yield num
        num=num+1


sum_of_first_n=sum(firstn(10))
print(firstn(3))

【问题讨论】:

  • print(list(firstn(3)))
  • 欢迎您。您介意正确格式化您的代码,以便其他人也可以从中受益吗?

标签: python generator


【解决方案1】:

一般:

print(list(firstn(n)))

确保您的生成器不是无限的。如果您不确定,请使用以下内容:

import itertools as it

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

最多打印前 100 个元素。

【讨论】:

    【解决方案2】:

    有不同的方法可以做到这一点,但基本上你必须遍历迭代器。最简单的方法可能是使用列表推导:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 2019-04-13
      • 2019-03-11
      • 2020-02-27
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      相关资源
      最近更新 更多