您的“关注”和“点赞”,是信任,是承认,是支持,是动力......python
如意见相佐,可留言。
本人必将不遗余力试图作到准确和全面,终其一辈子进行修改补充更新。微信
range
类型表示不可变的数字序列,一般用于在 for
循环中循环指定的次数。函数
range 类型相比常规 list 或 tuple 的优点在于一个 range 对象老是占用固定数量的(较小)内存,不论其所表示的范围有多大(由于它只保存了 start, stop 和 step 值,并会根据须要计算具体单项或子范围的值)。.net
使用格式以下所示:3d
class range(stop) class range(start, stop[, step])
对以上格式说明,code
range 构造器
的参数必须为整数(能够是内置的 int 或任何实现了 index 特殊方法的对象)。对象
若是省略 step
参数,其默认值为 1。 若是省略 start
参数,其默认值为 0,若是 step
为零则会引起 ValueError
。blog
若是 step
为正值,肯定 range r
内容的公式为 r[i] = start + step*i
其中 i >= 0
且 r[i] < stop
。若是 step
为负值,肯定 range
内容的公式仍然为 r[i] = start + step*i
,但限制条件改成 i >= 0 且 r[i] > stop
。若是 r[0]
不符合值的限制条件,则该 range
对象为空。 range
对象确实支持负索引,可是会将其解读为从正索引所肯定的序列的末尾开始索引。索引
元素绝对值大于 sys.maxsize
的 range 对象是被容许的,但某些特性 (例如 len()
) 可能引起 OverflowError
。图片
stop 参数
:不包括stop
自己。
举例以下所示:
>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5)) [0, 5, 10, 15, 20, 25] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) []
range 对象实现了 collections.abc.Sequence ABC
,提供如包含检测、元素索引查找、切片等特性,并支持负索引 ,举例以下所示:
>>> r = range(0, 20, 2) >>> r range(0, 20, 2) >>> 11 in r False >>> 10 in r True >>> r.index(10) 5 >>> r[5] 10 >>> r[:5] range(0, 10, 2) >>> r[-1] 18
==
和 !=
检测 range 对象
是否相等使用 ==
和 !=
检测 range 对象是否相等是将其做为序列来比较。
也就是说,若是两个 range 对象表示相同的值序列就认为它们是相等的。
请注意:比较结果相等的两个 range 对象可能会具备不一样的 start, stop 和 step 属性。举例以下所示:
range(0) == range(2, 1, 3) range(0, 3, 2) == range(0, 4, 2)
3.2 版更改: 实现 Sequence ABC
。 支持切片和负数索引。 使用 int
对象在固定时间内进行成员检测,而不是逐一迭代全部项。
3.3 版更改: 定义 ==
和 !=
以根据 range 对象所定义的值序列来进行比较(而不是根据对象的标识)。
3.3 新版功能: start
, stop
和 step
属性。