nob*_*ody 6 python printing generator python-3.x
当我处理print()函数(Python 3)时出现问题.
当我在寻找系列的总和时,我可以使用以下代码模式:
>>> sum(i for i in range(101))
Run Code Online (Sandbox Code Playgroud)
但是,当我倾向于检查我所做的系列时:(我选择print()并假设它将逐行打印)
>>> print(i for i in range(101))
Run Code Online (Sandbox Code Playgroud)
事实证明,它成为没有价值回报的发电机对象.所以我必须使用list()进行系列检查.这是印刷功能的缺陷吗?
PS:上面写的是一个形成发生器的例子,不是自然系列的最简单形式,而是复杂系列的骨骼结构.为了方便系列值检查,我正在寻找一种逐行打印每个值的方法.
use*_*ica 13
sum将可迭代的东西加起来,同时print采用单独的参数进行打印.如果要分别提供所有生成器的项目print,请使用*符号:
print(*(i for i in range(1, 101)))
Run Code Online (Sandbox Code Playgroud)
但是,在任何一种情况下,您实际上都不需要发电机:
sum(range(1, 101))
print(*range(1, 101))
Run Code Online (Sandbox Code Playgroud)
如果你想要它们在不同的行上,你会期望多个单独调用的行为print,这意味着你期望定期循环的行为:
for item in generator_or_range_or_whatever:
print(item)
Run Code Online (Sandbox Code Playgroud)
虽然您也可以选择指定'\n'项目分隔符:
print(*generator_or_range_or_whatever, sep='\n')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3012 次 |
| 最近记录: |