python内置模块之区间范围(range)
Python内置模块中的区间范围(builtins.range)的基本用法。
range(区间范围)
help#
>>> help(range)
Help on class range in module builtins:
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).
usage#
可以将其转换为 tuple 或 list 打印出其值:
access through subscripted index#
range 支持下标索引访问:
expressions#
len(r)
: Return the number of elements in range r.e in r
: Test e for membership in r.e not in r
: Test e for non-membership in r.for e in r
: enumerate elements in r.
# 返回区间包含的元素个数
>>> len(r)
5
# 判断5是否在区间内
>>> 5 in r
True
# 判断6是否不在区间内
>>> 6 not in r
True
# for 循环遍历
>>> for i in r:
... print(i)
...
1
3
5
7
9
Methods#
| count(...)
| rangeobject.count(value) -> integer -- return number of occurrences of value
|
| index(...)
| rangeobject.index(value, [start, [stop]]) -> integer -- return index of value.
| Raise ValueError if the value is not present.
r.count(e)
:返回区间范围内元素e的个数:
r.index(e)
:返回区间范围内元素e的索引,不存在抛异常:
>>> r.index(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 4 is not in range
>>> r.index(5)
2
usage#
区间的典型应用是界定列表索引:
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a
[1, 2, 3, 4, 5, 6, 7]
>>> for i,e in enumerate(a):
... print('l[%d] = %d' % (i, e))
...
l[0] = 1
l[1] = 2
l[2] = 3
l[3] = 4
l[4] = 5
l[5] = 6
l[6] = 7
>>> for i in range(0, len(a)): # i=[0, len(a)-1]
... print("a[{0}] = {1}".format(i, a[i]))
...
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
a[5] = 6
a[6] = 7
negative step#
如果 step>0
,则 start+n*step
终止条件为 <stop
。
当顺序遍历数组时,索引范围是 [0, len-1],终止条件为
<len
。
如果 step<0
,则 start+n*step
终止条件为 >stop
。
当逆向遍历数组时,索引范围是 [len-1, 0],终止条件为
>-1
。
C语言中 for (i=len-1; i>=1; i--)
的等效实现:
冒泡升序排序中每轮的冒泡位置
C语言中 for (i=len-1; i>=0; i--)
的等效实现:
C语言中 for (int k=i; k>=offset; k-=offset)
的等效实现:
希尔升序排序中