当我处理print()函数(Python 3)时出现问题。
当我寻找序列的总和时,我可以使用以下代码模式:
>>> sum(i for i in range(101))
但是当我倾向于检查自己制作的系列时:(我选择print()并假设它将逐行打印出来)
>>> print(i for i in range(101))
事实证明,它成为没有返回值的生成器对象。因此,我必须使用list()进行序列检查。那是打印功能上的缺陷吗?
PS:以上内容是构成生成器的示例,不是自然序列的最简单形式,而是复杂序列的骨骼结构。为了方便进行系列值检查,我正在寻找一种逐行打印每个值的方法。
sum需要累加的东西累加起来,而print要打印单独的参数。如果要print单独生成所有生成器的项目,请使用*符号:
sum
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'为项目分隔符:
'\n'
print(*generator_or_range_or_whatever, sep='\n')