python range基础介绍
在Python中,我们经常会用到 for i in range(3) 这样的循环方式,这里的 range 是Python的内置函数,用于生成整数序列,设计初衷是高效创建数值序列。与直接创建列表存储序列相比, range 不会立即生成所有元素,而是在迭代时按需生成,因此内存占用极低,即便处理大规模数据也能保持高效。
range 有三种调用形式:
1. 单参数形式: range(stop)
- 生成从 0 到 stop (不含 stop )的整数序列。
- 示例: range(3) → 生成 0, 1, 2
2. 双参数形式: range(start, stop)
- 生成从 start 到 stop (不含 stop )的整数序列。
- 示例: range(1, 3) → 生成 1, 2
3. 三参数形式: range(start, stop, step)
- 第三个参数为步长,可正可负(步长≠0)。
- 示例1(正数步长): range(0, 10, 2) → 生成 0, 2, 4, 6, 8
- 示例2(负数步长): range(4, 0, -2) → 生成 4, 2
range 对象的特点:
- 可迭代:支持 for 循环遍历,可用索引访问。
- 不可变:无法通过索引修改元素(如 r = range(10); r[6] = 100 会报错)。
- 内存高效:仅存储 start 、 stop 、 step 三个参数,无论序列多长,内存占用恒定。
- 惰性生成:按需生成元素,而非一次性创建所有值(对比 list(range(10**6)) 与直接创建列表的内存差异)。
使用注意事项:
- 所有参数必须为整数,且步长不能为 0 (如 range(1.5, 3) 或 range(5, 0, 0) 会报错)。
- 若需生成小数序列,可使用 numpy.arange 或数学计算转换。
应用场景:
1. 循环控制:指定循环次数(如 for i in range(5): print(i) )。
2. 生成算术序列:等差数列、等距数值(如 range(0, 100, 5) )。
3. 批量生成文件名: [f"image_{i:02d}.jpg" for i in range(10)] → 生成 image_00.jpg 到 image_09.jpg 。
4. 算法场景:生成特定范围数值用于排序、查找等逻辑。
通过结合具体场景灵活使用 range ,既能提升代码效率,又能避免数据类型或逻辑错误。如有其他补充,欢迎在评论区留言!