Python代码无语法错误但输出不符合预期:生成器对象输出异常咨询
问题原因分析
你现在的代码里,print(i for x in range(1,i+1)) 这一行里的 i for x in range(1,i+1) 是一个生成器表达式,Python不会自动把它展开成你想要的序列,直接print的话就会输出生成器的内存地址对象,这就是为什么你看到的都是<generator object ...>这类输出。
解决方案
根据你的需求,这里有几种常见的修正方式:
方式1:用列表推导式替换生成器表达式
把生成器表达式改成列表推导式(用方括号[]代替圆括号),这样print的时候会输出完整的列表:
for i in range(1,5): print([i for x in range(1,i+1)])
运行后输出:
[1] [2, 2] [3, 3, 3] [4, 4, 4, 4]
方式2:把生成器转换成列表再打印
如果一定要保留生成器表达式,可以用list()把它转换成列表后再print:
for i in range(1,5): print(list(i for x in range(1,i+1)))
输出结果和上面完全一致。
补充:如果你的预期是递增数字串(比如1、12、123这类)
如果你的实际预期不是重复数字的列表,而是逐次拼接的数字序列,那代码可以调整成这样:
for i in range(1,5): print(''.join(str(x) for x in range(1,i+1)))
运行后输出:
1 12 123 1234
内容的提问来源于stack exchange,提问作者DIVYANSHU
相关产品推荐
相关产品推荐

