如何在 Python 中遍历 range

PythonBeginner
立即练习

简介

Python 通过 range() 函数提供了强大的迭代功能,使开发者能够高效地遍历数字序列并控制循环行为。本教程将探讨遍历 range 的综合技巧,帮助程序员了解如何在 Python 编程中有效地生成和操作数字序列。

理解 range

什么是 range?

在 Python 中,range() 是一个内置函数,用于生成数字序列。它通常用于创建数字序列,特别是当你需要迭代特定次数或创建数字列表时。

基本语法

range() 函数可以使用一个、两个或三个参数:

## 单个参数:从 0 开始,到指定数字(不包括)结束
range(stop)

## 两个参数:从第一个数字开始,到第二个数字(不包括)结束
range(start, stop)

## 三个参数:起始值、结束值和步长
range(start, stop, step)

range 的特点

参数 描述 示例
Stop 生成从 0 到 stop - 1 的数字 range(5) → 0, 1, 2, 3, 4
Start, Stop 生成从 start 到 stop - 1 的数字 range(2, 7) → 2, 3, 4, 5, 6
Start, Stop, Step 生成具有指定增量的数字 range(1, 10, 2) → 1, 3, 5, 7, 9

内存效率

graph LR
    A[Range 函数] --> B[即时生成数字]
    B --> C[内存高效]
    B --> D[惰性求值]

与列表不同,range() 不会同时将所有数字存储在内存中。它会动态生成数字,这使得它对于大型序列来说内存效率很高。

要点总结

  • range() 创建一个不可变的数字序列
  • 结束值始终不包括在内
  • 适用于循环、列表推导式和生成数字序列
  • for 循环和列表转换配合良好

示例演示

## range 的基本用法
for i in range(5):
    print(i)  ## 输出 0, 1, 2, 3, 4

## 带有起始值和结束值的 range
numbers = list(range(2, 7))
print(numbers)  ## [2, 3, 4, 5, 6]

## 带有步长的 range
even_numbers = list(range(0, 10, 2))
print(even_numbers)  ## [0, 2, 4, 6, 8]

在 LabEx,我们建议你练习这些 range 的概念,以便在 Python 编程中建立坚实的基础。

使用 range 进行迭代

迭代技巧

使用 for 循环迭代

使用 range() 进行迭代最常见的方法是使用 for 循环:

## 基本迭代
for i in range(5):
    print(i)  ## 输出 0, 1, 2, 3, 4

## 带起始值和结束值的迭代
for num in range(2, 7):
    print(num)  ## 输出 2, 3, 4, 5, 6

反向迭代

## 反向迭代
for i in range(5, 0, -1):
    print(i)  ## 输出 5, 4, 3, 2, 1

迭代模式

graph TD
    A[Range 迭代] --> B[简单循环]
    A --> C[嵌套循环]
    A --> D[列表推导式]
    A --> E[基于索引的访问]

嵌套循环示例

## 带 range 的嵌套循环
for i in range(3):
    for j in range(2):
        print(f"({i}, {j})")

高级迭代技巧

基于索引的迭代

fruits = ['apple', 'banana', 'cherry']
for index in range(len(fruits)):
    print(f"索引 {index}: {fruits[index]}")

列表推导式

## 创建一个平方数列表
squared_numbers = [x**2 for x in range(6)]
print(squared_numbers)  ## [0, 1, 4, 9, 16, 25]

迭代方法比较

方法 使用场景 性能
简单 for 循环 基本迭代
反向迭代 倒序计数 中等
嵌套循环 复杂迭代 取决于复杂度
列表推导式 快速生成列表 高效

最佳实践

  • 使用 range() 进行可预测的数字迭代。
  • 根据具体用例选择合适的迭代方法。
  • 对于复杂的嵌套循环要注意性能。

在 LabEx,我们鼓励你练习这些迭代技巧来提高你的 Python 编程技能。

常见陷阱

## 错误的迭代
for i in range(10):
    ## 注意修改循环变量
    ## 避免在循环内更改 i

range 实际应用示例

实际应用场景

graph LR
    A[Range 实际应用] --> B[数据处理]
    A --> C[数学计算]
    A --> D[算法实现]
    A --> E[系统自动化]

1. 生成序列

等差数列

## 生成等差数列
arithmetic_seq = list(range(0, 20, 3))
print(arithmetic_seq)  ## [0, 3, 6, 9, 12, 15, 18]

2. 数据处理

过滤与转换

## 过滤偶数
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)  ## [2, 4, 6, 8, 10]

3. 数学运算

求和与求积

## 计算前 10 个数字的和
total_sum = sum(range(1, 11))
print(f"Sum: {total_sum}")  ## Sum: 55

## 计算阶乘
def factorial(n):
    return 1 if n == 0 else n * factorial(n-1)

fact_5 = factorial(5)
print(f"5 的阶乘: {fact_5}")  ## 5 的阶乘: 120

4. 算法实现

矩阵运算

## 创建乘法表
def multiplication_table(n):
    for i in range(1, n+1):
        for j in range(1, n+1):
            print(f"{i} x {j} = {i*j}", end="\t")
        print()

multiplication_table(5)

5. 系统自动化

文件处理

import os

## 生成多个文件
for i in range(1, 6):
    filename = f"report_{i}.txt"
    with open(filename, 'w') as f:
        f.write(f"报告 {i} 内容")

性能考量

场景 推荐的 range 使用方式
小序列 直接使用 range()
大序列 生成器表达式
复杂迭代 列表推导式

高级技巧

动态生成 range

## 根据输入生成 range
def dynamic_range(start, stop, step=1):
    return list(range(start, stop, step))

print(dynamic_range(0, 20, 2))  ## [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

最佳实践

  • 对于可预测的迭代使用 range()
  • 选择合适的步长值
  • 考虑内存效率
  • 验证输入参数

在 LabEx,我们建议你探索这些实际示例来提升你的 Python 编程技能。

总结

通过掌握 Python 中的 range 迭代技巧,开发者能够编写出更简洁、易读且高效的代码。理解如何生成序列、控制循环迭代以及应用 range 函数,能使程序员在各种编程场景中编写更复杂且性能更佳的 Python 脚本。