为什么Python中直接打印range对象不会输出对应的数字列表?
原因解释
这是Python 3中range类型的固有设计:
- Python 3的
range不会预先生成完整的数值列表存储在内存中,它属于惰性可迭代对象,只会在你实际遍历(比如for循环迭代、手动转换为列表)时,才会按起始值、终止值、步长的规则实时生成对应的数值。这种设计的优势是内存占用极低,哪怕你设置的区间范围是百万、千万级,range对象占用的内存空间都是固定的,不会因为要存储大量元素造成内存浪费。 - 你直接打印
range对象时,print函数会调用该对象自带的字符串格式化方法,只会输出它的定义参数,也就是你看到的range(1, 1000, 2),不会自动展开所有元素。
如果你需要直接打印完整的奇数列表,手动把range对象转换为列表即可:
x = list(range(1, 1000, 2)) print(x)
内容的提问来源于stack exchange,提问作者Avinash K
相关产品推荐
相关产品推荐

