Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Range

🟦 1. 基本用法

range() 生成一个 “惰性序列” (不是列表),常用于 for 循环。

语法:

range(stop)
range(start, stop)
range(start, stop, step)

🟩 2. 示例:最常见写法

① 从 0 到 9

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

② 从 3 到 9

for i in range(3, 10):
    print(i)

③ 步长 step

for i in range(0, 10, 2):
    print(i)   # 0 2 4 6 8

🟦 3. 倒序

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

等价:

for i in reversed(range(1, 11)):
    print(i)

🟩 4. 判断某个数字是否在范围内

if x in range(5, 10):
    ...

range 本身支持快速判断,不会遍历(常量时间)。

🟦 5. 获取 range 的长度

len(range(10))          # 10
len(range(3, 10))       # 7
len(range(1, 10, 2))    # 5

🟩 6. 将 range 转为 list(不推荐大范围)

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

range 是惰性的,不占内存;但 list 会真正展开。

🟦 7. 检查是否为空 range(良好实践)

if range(5):         # True
if range(0):         # False

🟩 8. range 的特点(非常重要)

  • 不可变
  • 惰性(不展开、不占用大内存)
  • 可以快速判断包含(x in range(…))
  • 支持切片(但仍然是 range)

示例:

r = range(0, 20, 2)
r2 = r[1:5]
print(r2)   # range(2, 10, 2)

🟦 9. range 与 for 的最佳实践

for 循环次数明确时,用 range(Pythonic)

for _ in range(3):
    print("hello")

遍历列表用 for,不用 range

不推荐:

for i in range(len(items)):
    print(items[i])

推荐:

for item in items:
    print(item)

需要 index 时使用 enumerate

for i, item in enumerate(items):
    print(i, item)

🟩 10. 高级:range 的数学构造(工程技巧)

等差序列:

range(start, stop, step)

可以用于:

  • 批处理分页
  • 数据分片
  • 分段任务控制

示例:分页查询(你项目适用)

for offset in range(0, total, batch_size):
    batch = data[offset : offset + batch_size]

🟦 11. 使用 range 避免浮点误差(经典技巧)

错误:

x = 0
while x < 1:
    ...
    x += 0.1   # 浮点误差

正确:

for i in range(10):
    x = i * 0.1
    ...

🟩 12. range 速查表(收藏版)

用法 写法
0..n-1 range(n)
a..b-1 range(a, b)
步长 range(a, b, step)
倒序 range(b, a, -1)
倒序更安全 reversed(range(a, b))
转列表 list(range(n))
取长度 len(range(...))
判断包含 x in range(...)
切片 range(...)[s:e]
无需 index 遍历 for item in seq
需要 index 遍历 用 enumerate