【问题标题】:Generators - Printing generated values [duplicate]生成器 - 打印生成的值
【发布时间】:2018-01-19 08:08:37
【问题描述】:

有人可以向我解释为什么在“with”和“without”一个 for 循环之间打印我的序列生成存在差异?

def generation(x):
    i = 0
    while i < x:
        yield i
        i += 1

x = generation(10)
print("Print without for loop: " + str(x))

print("Print with for loop: ")
for j in x:
    print(j)

【问题讨论】:

标签: python generator


【解决方案1】:

你的第一个print 打印生成器object。您的第二个 print 调用生成器,遍历生成的值。

这很像打印函数对象(句柄)的值和调用函数之间的区别。

我认为您可能误解了您的第一个 print 的语义。要获取该形式的整数列表,您需要一些迭代生成器的内容:

print("Print as list")
print (list(generation(10)))

【讨论】:

  • 只是list(generation(10)) 工作。不需要列表理解。
  • 好点。我试图并行 OP 的使用。现在我在打印中看到它,list 操作更好。答案已升级。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多