python函数range问题

请问为什么print(range(4))打印出的结果是range(0,4),而非【0,1,2,3】,如下图所示

讨论数量: 3
Jason990420

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
3年前 评论

python2 中是 [0,1, 2, 3]。
python3中有改进,是range(0,4)

3年前 评论

因为这样效率更高吧,懒加载,你用的时候才给你加载,而不是一开始就给你全都加载完。
感觉应该就是个生成器,可以看看底层代码,(我也是瞎猜的哈哈

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!