问答 / 0 / 3 / 创建于 5年前 / 更新于 5年前
请问为什么print(range(4))打印出的结果是range(0,4),而非【0,1,2,3】,如下图所示
range函数使用生成器来生成一个范围内的数字, 它不会一次生成所有数值, 仅在迭代要求时才生成下一个值.
range
range函数不会返回列表类型, 它返回一个 range 对象, 即类型为 range 的序列对象, 一个不可变的整数序列对象.
>>> range(4) range(0, 4) >>> print(range(4)) range(0, 4) >>> type(range(4)) <class 'range'> >>> range(4).__repr__() 'range(0, 4)' >>> range(4) == [0, 1, 2, 3] False >>> range(4) == (0, 1, 2, 3) False
python2 中是 [0,1, 2, 3]。python3中有改进,是range(0,4)
因为这样效率更高吧,懒加载,你用的时候才给你加载,而不是一开始就给你全都加载完。感觉应该就是个生成器,可以看看底层代码,(我也是瞎猜的哈哈
我要举报该,理由是:
range函数使用生成器来生成一个范围内的数字, 它不会一次生成所有数值, 仅在迭代要求时才生成下一个值.range函数不会返回列表类型, 它返回一个 range 对象, 即类型为 range 的序列对象, 一个不可变的整数序列对象.python2 中是 [0,1, 2, 3]。
python3中有改进,是range(0,4)
因为这样效率更高吧,懒加载,你用的时候才给你加载,而不是一开始就给你全都加载完。
感觉应该就是个生成器,可以看看底层代码,(我也是瞎猜的哈哈