在 Python 中,range()函数用于创建一系列数字的序列,常用于for循环中;

函数语法

存在三种形式,如下:

range(stop)
range(start, stop)
range(start, stop, step)
  1. 表示生成从0开始到stop - 1结束的整数序列,步长为1
  2. 表示生成从start开始到stop - 1结束的整数序列,步长为1
  3. 表示生成从start开始到stop - 1结束的整数序列,步长为step

当第一个参数大于第二个参数时,range()函数仍然会返回一个序列,但这个序列中的元素是按照从第一个参数开始到第二个参数结束,以步长为负数的方向递减的。

返回一个range对象;

range() 函数示例

for i in range(5):
    print(i,end=' ')
# 输出: 0 1 2 3 4
print()

for i in range(2, 5):
    print(i,end=' ')
# 输出: 2 3 4
print()

for i in range(1, 10, 2):
    print(i,end=' ')
# 输出: 1 3 5 7 9
print()

for i in range(10, 0, -2):
    print(i,end=' ')
# 输出: 10 8 6 4 2
print()

range对象是惰性的,不立即生成所有数字,只在需要时生成:

r = range(1000000) # 立即创建,占用内存很少
print(type(r))     # <class 'range'>

# 这时才实际生成所有数字
lst = list(r)  
print(type(lst))   # <class 'list'>

# 内存占用对比
import sys
print(f"range对象大小: {sys.getsizeof(r)} bytes")    # 约 48 bytes
print(f"list对象大小: {sys.getsizeof(lst)} bytes")   # 约 8000056 bytes

range对象常用的属性和方法:

r = range(2, 10, 2)

# 访问元素
print(r[0])      # 2
print(r[2])      # 6
print(r[-1])     # 8

# 长度
print(len(r))    # 4

# 成员检查
print(6 in r)    # True
print(7 in r)    # False

# 索引
print(r.index(6))  # 2

# 计数
print(r.count(6))  # 1