Skip to main content
 首页 » 编程设计

python之如何打印生成器的内容

2025年05月04日13soundcode

N = [1, 2, 3] 
print(n for n in N) 

结果:

<generator object <genexpr> at 0x000000000108E780> 

为什么没有打印出来?:

1 
2 
3 

但是代码:

sum(n for n in N)  

会对N中的所有数求和。

你能告诉我为什么 sum() 有效但 print() 失败吗?

请您参考如下方法:

这是因为您将一个生成器传递给了一个函数,这就是该生成器的 __repr__ 方法返回的内容。如果你想打印它生成的内容,你可以使用:

print(*N, sep='\n') # * will unpack the generator 

或

print('\n'.join(map(str, N))) 

请注意,一旦您检索生成器的输出以打印它,生成器已耗尽 - 再次尝试对其进行迭代将不会生成任何项目。