当我处理 print() 函数(Python 3)时出现问题。
当我寻找一系列的总和时,我可能会使用以下代码模式:
>>> sum(i for i in range(101))
但是当我倾向于检查我制作的系列时:(我选择 print() 并假设它会逐行打印出来)
>>> print(i for i in range(101))
结果变成了一个生成器对象,没有返回值。所以我必须使用 list() 进行系列检查。这是打印功能的缺陷吗?
PS:上面写的是一个生成生成器的例子,不是自然序列的最简单形式,而是复杂序列的骨架结构。为了方便检查系列值,我正在寻找一种逐行打印每个值的方法。
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')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)