在 Python 中,range 是一个内置函数,用于生成一个不可变的整数序列,通常用于控制循环次数或生成数值范围。以下是详细说明:
基本语法
range(stop) # 生成 [0, stop) 的整数,步长为1
range(start, stop) # 生成 [start, stop) 的整数,步长为1
range(start, stop, step) # 生成 [start, stop) 的整数,步长为step(可为负)
关键特性
-
惰性计算
range不会预先生成所有值,而是按需计算,节省内存(尤其在处理大范围时)。r = range(1, 1000000) # 不会实际存储100万个数字 -
不可变序列
生成的序列是只读的,不能直接修改:r = range(5) r[0] = 10 # 报错: TypeError -
支持负步长
可以生成递减序列:list(range(5, 0, -1)) # 输出: [5, 4, 3, 2, 1]
常见用途
1. 控制循环次数
for i in range(3):
print(i) # 输出: 0 1 2
2. 生成数值列表
numbers = list(range(1, 6)) # [1, 2, 3, 4, 5]
3. 遍历列表索引
fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
print(i, fruits[i]) # 输出索引和值
4. 数学运算范围
squares = [x**2 for x in range(10)] # 生成平方数列表
与 xrange(Python 2)的区别
- Python 3 的
range等效于 Python 2 的xrange(惰性生成)。 - Python 2 的
range会直接生成完整列表(已废弃)。
性能对比
# 内存占用对比
import sys
sys.getsizeof(range(1000000)) # 约48字节(固定大小)
sys.getsizeof(list(range(100))) # 约900字节(随元素增加)
边界示例
| 代码示例 | 输出结果(转换为列表后) |
|---|---|
range(5) | [0, 1, 2, 3, 4] |
range(1, 5) | [1, 2, 3, 4] |
range(0, 10, 2) | [0, 2, 4, 6, 8] |
range(5, 0, -1) | [5, 4, 3, 2, 1] |
range(3, 3) | [] (空序列,因为start=stop) |
注意事项
-
参数必须为整数
range(1.5, 5) # 报错: TypeError -
步长不为零
range(1, 5, 0) # 报错: ValueError -
空序列条件
- 当
start >= stop且步长为正时,返回空序列。 - 当
start <= stop且步长为负时,返回空序列。
- 当
进阶用法
1. 检查成员关系
5 in range(10) # True
3.5 in range(4) # False (仅支持整数)
2. 切片操作
r = range(10)
r_slice = r[2:5] # 生成新的range对象: range(2, 5)
3. 与其他函数结合
sum(range(101)) # 计算0到100的和: 5050
min(range(5, 15)) # 最小值: 5
总结:range 是 Python 中高效生成整数序列的工具,特别适合循环控制和范围操作,其惰性特性使其在处理大规模数据时优势明显。
2315

被折叠的 条评论
为什么被折叠?



