Python中print(range())输出range对象而非数字序列的原因及解决方法
现象原因
Python 3 中 range() 函数返回的是惰性可迭代对象,而非直接生成的完整数字序列,该设计是为了节省内存(哪怕设置超大的数值范围,也不会一次性占用大量内存空间)。你直接打印该对象时,输出的是它的默认字符串表示形式,也就是你看到的 range(1, 20, 2),而非内部的元素序列。
无需循环获取range序列的实现方式
不需要依赖循环也可以输出或获取range对应的完整数字序列,常用方法如下:
- 转换为序列容器
可以用list()、tuple()等容器类直接将range对象转为对应类型的完整序列,示例:# 转为列表输出 print(list(range(1, 20, 2)), end=" ") - 用解包操作符直接输出
如果你只是需要按空格分隔打印所有元素,可以直接用*解包range对象传入print函数,完全不需要额外转换或循环:
该写法会直接输出print(*range(1, 20, 2), end=" ")1 3 5 7 9 11 13 15 17 19,符合你的预期。
内容的提问来源于stack exchange,提问作者Diksha Nain
相关产品推荐
相关产品推荐

