小编典典

python 3打印生成器

python

当我处理print()函数(Python 3)时出现问题。

当我寻找序列的总和时,我可以使用以下代码模式:

>>> sum(i for i in range(101))

但是当我倾向于检查自己制作的系列时:(我选择print()并假设它将逐行打印出来)

>>> print(i for i in range(101))

事实证明,它成为没有返回值的生成器对象。因此,我必须使用list()进行序列检查。那是打印功能上的缺陷吗?

PS:以上内容是构成生成器的示例,不是自然序列的最简单形式,而是复杂序列的骨骼结构。为了方便进行系列值检查,我正在寻找一种逐行打印每个值的方法。


阅读 189

收藏
2020-12-20

共1个答案

小编典典

sum需要累加的东西累加起来,而print要打印单独的参数。如果要print单独生成所有生成器的项目,请使用*符号:

print(*(i for i in range(1, 101)))

但是,无论哪种情况,您实际上都不需要生成器:

sum(range(1, 101))
print(*range(1, 101))

如果希望将它们放在单独的行上,那么您将期望对的多个单独调用的行为print,这意味着您将期望规则循环的行为:

for item in generator_or_range_or_whatever:
    print(item)

尽管您也可以选择指定'\n'为项目分隔符:

print(*generator_or_range_or_whatever, sep='\n')
2020-12-20