You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单行代码替代Python循环打印平方值的代码?解决生成器输出问题

解决单行Python代码实现逐行打印平方数的问题

嘿,我明白你的问题了!你尝试用单行代码替代原来的循环打印,但直接把生成器表达式传给print()只会输出生成器对象的内存地址,而不是你想要的逐行平方数。下面给你几个可行的方案:

方案1:用*解包生成器 + sep='\n'

这是最贴近你原代码行为的方式,它会把生成器里的每个平方数作为独立参数传给print(),并通过分隔符实现换行:

print(*(i**2 for i in range(int(input()))), sep='\n')

原理:

  • (i**2 for i in range(int(input()))) 是一个生成器表达式,逐个生成平方数
  • * 会把生成器中的所有元素“展开”成print()的多个位置参数
  • sep='\n' 指定每个参数之间用换行符分隔,这样每个平方数就会单独占一行打印

方案2:用str.join()拼接字符串

这种方式先把所有平方数转成字符串,再用换行符拼接后一次性打印:

print('\n'.join(str(i**2) for i in range(int(input()))))

注意:如果输入的n非常大,这种方式会先在内存中构建完整的字符串,而原代码是逐行输出,内存占用略有区别,但输出结果是一致的。

为什么你的原单行代码不行?

你写的print(i**2 for i in range(int(input())))中,i**2 for i in ...是生成器对象,print()默认会打印对象的字符串表示(也就是你看到的<generator object ...>),而不会主动遍历生成器输出里面的元素。

内容的提问来源于stack exchange,提问作者Arkistarvh Kltzuonstev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:48:12