range()

2018-12-01  本文已影响0人  import_hello

转载须注明出处:简书@Orca_J35 | GitHub@orca-j35

class range(object)
 |  range(stop) -> range object
 |  range(start, stop[, step]) -> range object
 |  
 |  Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step. 
 |  range(i, j) produces i, i+1, i+2, ..., j-1.
 |  start defaults to 0, and stop is omitted!  
 |  range(4) produces 0, 1, 2, 3.
 |  These are exactly the valid indices for a list of 4 elements.
 |  When step is given, it specifies the increment (or decrement).

🔨 class range(stop)

🔨 class range(start, stop[, step])

在调用 range 类的构造函数时,必须使用整数作为实参。细节上而言,实参可以是 int 对象,或是实现任何了 __index__ 方法的对象。

各参数的含义如下:

虽然 Python 允许 range 对象的长度大于 sys.maxsize,但部分功能可能会因此抛出 OverflowError 异常,比如 len()

>>> r=range(100000000000000000000000)
>>> len(r)
Traceback (most recent call last):
  File "<pyshell#79>", line 1, in <module>
    len(r)
OverflowError: Python int too large to convert to C ssize_t

range 类型相较于列表或元组的优势在于,无论 range 对象的长度如何变化,其占用的内存量总是相同的,而且占用的内存也很少。因为在 range 对象中仅存储了 start , stop , step 三个值,只有当我们需要某个项或 subrange 时,range 对象才会计算出相应的值,range 对象本身并不会直接存储所有的元素。

扩展阅读:

上一篇下一篇

猜你喜欢

热点阅读