在 Python 中,range()函数用于创建一系列数字的序列,常用于for循环中;
函数语法
存在三种形式,如下:
range(stop)
range(start, stop)
range(start, stop, step)
- 表示生成从
0开始到stop - 1结束的整数序列,步长为1; - 表示生成从
start开始到stop - 1结束的整数序列,步长为1; - 表示生成从
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