range()
是 Python 中用于生成一个 不可变的整数序列 的内置函数,常用于循环或需要整数序列的场景。它的核心作用是 按规则生成一组连续或间隔的数字。
基本语法
range(stop) # 生成 0 到 stop-1 的整数(默认从0开始)
range(start, stop) # 生成 start 到 stop-1 的整数
range(start, stop, step) # 生成 start 到 stop-1 的整数,步长为 step
核心作用
- 生成数字序列
返回一个可迭代对象(Python 3 中不是列表,但可转换为列表),默认从0
开始,左闭右开(不包含stop
)。
list(range(5)) # [0, 1, 2, 3, 4]
list(range(2, 6)) # [2, 3, 4, 5]
list(range(1, 10, 2)) # [1, 3, 5, 7, 9]
list(range(5, 0, -1)) # [5, 4, 3, 2, 1](反向步长)
- 控制循环次数
在for
循环中指定迭代次数:
for i in range(3):print("Hello") # 输出 3 次 "Hello"
- 遍历序列的索引
结合len()
遍历列表、字符串等的索引:
words = ["apple", "banana", "cherry"]
for i in range(len(words)):print(i, words[i]) # 输出索引和对应元素
- 生成等差数列
通过step
参数控制间隔:
list(range(0, 10, 3)) # [0, 3, 6, 9]
注意事项
- 参数必须为整数
start
,stop
,step
必须是整数,否则会报错:
range(1.5) # ❌ 错误:TypeError
- 左闭右开
生成的序列不包含stop
本身:
list(range(2, 5)) # [2, 3, 4]
- 步长为负时需确保逻辑正确
当step
为负数时,start
应大于stop
:
list(range(5, 2, -1)) # [5, 4, 3]
- 内存高效
range()
直接生成可迭代对象(Python 3 特性),而非一次性生成全部数字,适合大范围场景:
for i in range(1000000): # 不会占用大量内存pass
与其他函数的对比
- **Python 2 中的 **
xrange()
:类似于 Python 3 的range()
,返回生成器。 numpy.arange()
:支持浮点数步长(需安装 NumPy 库)。
总结
range()
是 Python 中生成整数序列的核心工具,高效且灵活,广泛用于循环控制、索引遍历、数字序列生成等场景。掌握它能让代码更简洁、更高效!