Python-range()函数的使用

143 阅读4分钟

一、前言

在 Python 编程中,range() 函数是一个非常常用且实用的内置函数,它用于生成一个整数序列,常用于 for 循环中控制循环次数。虽然看起来简单,但 range() 的灵活性和高效性让它成为 Python 开发者不可或缺的工具之一。

本文将带你全面了解:

  • range() 函数的基本语法;
  • 它在不同场景下的使用方式;
  • 常见误区与最佳实践;
  • 结合 for 循环、列表推导式等高级用法;

无论你是刚入门的新手,还是希望提升编程技巧的老手,这篇文章都将为你提供实用的知识点!

二、什么是 range()

range() 是 Python 内置函数,用于生成一个不可变的整数序列。

这个序列是“惰性”的,也就是说它不会一次性把所有数字都生成出来,而是在需要时才逐个生成,因此内存效率很高。

✅ 语法格式:

range(stop)
range(start, stop[, step])

参数说明:

参数描述
start起始值(包含)默认为 0
stop结束值(不包含)必须有
step步长(每次增加/减少的值),可选,默认为 1

📌 注意:range() 返回的是一个 range 类型对象,不是列表,如果需要列表可以使用 list(range(...)) 转换。

三、基本用法示例

示例 1:只传 stop 参数

for i in range(5):
    print(i)

输出:

0
1
2
3
4

📌 从 0 开始,到 5(不包含)结束。

示例 2:传入 start 和 stop

for i in range(2, 6):
    print(i)

输出:

2
3
4
5

📌 从 2 开始,到 6(不包含)结束。

示例 3:传入 startstopstep

for i in range(1, 10, 2):
    print(i)

输出:

1
3
5
7
9

📌 每次加 2,即步长为 2。

示例 4:负数步长(倒序)

for i in range(10, 0, -1):
    print(i)

输出:

10
9
8
7
6
5
4
3
2
1

📌 可以用于倒序遍历。

四、常见应用场景

✅ 1. 控制 for 循环次数

for i in range(3):
    print("Hello World!")

📌 输出三次 "Hello World!"。

✅ 2. 遍历索引

fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
    print(f"第 {i} 个水果是:{fruits[i]}")

📌 适用于需要同时访问索引和元素的情况。

✅ 3. 创建列表(结合列表推导式)

squares = [x**2 for x in range(1, 6)]
print(squares)  # 输出 [1, 4, 9, 16, 25]

📌 简洁高效地创建数据结构。

✅ 4. 分段处理数据

data = list(range(1, 21))
for i in range(0, len(data), 5):
    print(data[i:i+5])

📌 将数据分批次处理,如每 5 个一组。

✅ 5. 与 enumerate() 配合使用

words = ["cat", "window", "defenestrate"]
for index, word in enumerate(words):
    print(f"第 {index} 个单词是:{word}")

📌 同时获取索引和值。

五、注意事项与常见错误

❗ 错误示例 1:试图修改 range() 对象

r = range(5)
r[0] = 10  # 报错:TypeError: 'range' object does not support item assignment

📌 range() 是不可变序列,不能修改其中的元素。

❗ 错误示例 2:直接打印 range() 对象

print(range(5))  # 输出:range(0, 5)

📌 不会自动展开成列表,需要用 list() 转换。

❗ 错误示例 3:步长为 0

range(1, 5, 0)  # 报错:ValueError: range() arg 3 must not be zero

📌 步长不能为 0,否则会导致死循环。

✅ 推荐写法:转换为列表查看内容

print(list(range(5)))  # 输出 [0, 1, 2, 3, 4]

六、range() 与 xrange() 的区别(Python 2 vs Python 3)

特性Python 2 (xrange)Python 3 (range)
是否返回列表❌ 否❌ 否
是否支持切片❌ 否❌ 否
是否占用大量内存✅ 否✅ 否
是否有 __contains__ 方法✅ 是✅ 是
是否兼容 Python 3❌ 否✅ 是

📌 在 Python 3 中,xrange() 已被移除,统一使用 range(),其行为类似于 Python 2 的 xrange()

七、总结对比表

使用方式是否合法是否推荐适用场景
range(5)✅ 是✅ 推荐默认从 0 开始
range(2, 6)✅ 是✅ 推荐自定义起始
range(1, 10, 2)✅ 是✅ 推荐自定义步长
range(10, 0, -1)✅ 是✅ 推荐倒序
range(len(seq))✅ 是✅ 推荐遍历索引
range(1, 5, 0)❌ 否❌ 不推荐步长不能为 0

八、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!