Python 的 for 循环是自动化重复任务的强大工具,可以使代码更高效、更易于管理。本教程将解释 for 循环的工作原理,探讨不同的应用场景,并提供大量实用示例。无论你是初学者还是希望提升技能的开发者,这些示例都将帮助你更好地在 Python 项目中应用 for 循环。

Python 的 for 循环详解

Python 的 for 循环用于遍历序列(如列表、元组、字符串或范围)并多次执行代码块。它们对于高效地执行重复任务非常有用,可以处理数值和非数值数据。Python 的 for 循环简单且灵活,是编程中的基础工具。

语法
for item in sequence:
    # 要执行的代码块
  • item:一个变量,用于存储序列中的每个元素。
  • sequence:一个可迭代对象,如列表、元组、字符串或范围。
  • # 要执行的代码块:在每次迭代中执行的代码。
  • 示例
    示例 1:遍历列表
    numbers = [1, 2, 3, 4, 5]
    for number in numbers:
        print(number)
    

    输出

    1
    2
    3
    4
    5
    

    在这个示例中,循环遍历 numbers 列表中的每个元素,并将其打印到控制台。

    如何使用 Python 的 for 循环遍历字符串?

    在 Python 中,可以将字符串视为字符序列,使用 for 循环逐个处理字符串中的每个字符。每次迭代会处理字符串中的一个字符。以下是一个示例来说明这一点:

    text = "Hello, World!"
    for char in text:
        print(char)
    
    输出

    在这个示例中,循环会遍历字符串 text 中的每个字符并打印它。输出:

    H
    e
    l
    l
    o
    ,
     
    W
    o
    r
    l
    d
    !
    

    Python for 循环中的 break 语句

    在 Python 的 for 循环中,break 语句用于在满足特定条件时提前终止循环。一旦执行 break 语句,循环将停止迭代,程序控制会转移到循环后的下一条语句。

    示例
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    for number in numbers:
        if number == 5:
            break
        print(number)
    print("Loop terminated when number reached:", number)
    
    解释
    1. 初始化:列表 numbers 被初始化为从 1 到 10 的值。
    2. 迭代for 循环遍历列表 numbers 中的每个数字。
    3. 条件:在每次迭代中,循环检查当前数字是否等于 5。
    4. 中断:当遇到数字 5 时,break 语句被执行,终止循环。
    5. 输出:循环停止,程序打印从 1 到 4 的数字,然后打印一条消息,指示循环在数字达到 5 时终止。
    输出
    1
    2
    3
    4
    Loop terminated when number reached: 5
    

    Python for 循环中的 continue 语句

    在 Python 的 for 循环中,continue 语句用于跳过当前迭代并移动到下一个迭代。当 continue 语句被执行时,循环不会终止,而是跳过当前迭代中剩余的代码,直接进入下一次迭代。

    示例
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    for number in numbers:
        if number % 2 == 0:
            continue
        print(number)
    print("Loop skipped even numbers")
    
    解释
    1. 初始化:列表 numbers 被初始化为从 1 到 10 的值。
    2. 迭代for 循环遍历列表 numbers 中的每个数字。
    3. 条件:在每次迭代中,循环检查当前数字是否为偶数(即 number % 2 == 0)。
    4. 跳过:如果当前数字是偶数,continue 语句被执行,导致循环跳过当前迭代并移动到下一个数字。
    5. 处理:如果当前数字是奇数,则将其打印到控制台。
    输出
    1
    3
    5
    7
    9
    Loop skipped even numbers
    

    Python for 循环中的 range() 函数

    range() 函数在 Python 的 for 循环中用于生成一系列数字。它常用于在 for 循环中迭代特定的一组值。range() 函数可以接受一到三个参数:start(起始值)、stop(结束值)和 step(步长)。

    基本语法
    range(start, stop, step)
    
  • start:可选参数,默认为 0。指定生成序列的起始值。
  • stop:必填参数。指定生成序列的结束值(不包括此值)。
  • step:可选参数,默认为 1。指定生成序列的步长。
  • 示例
    for i in range(1, 10, 2):
        print(i)
    
    解释
    1. 初始化range() 函数被调用,参数为 start=1stop=10step=2
    2. 迭代for 循环遍历由 range(1, 10, 2) 生成的序列。
    3. 处理:在每次迭代中,当前值 i 被打印出来。
    输出
    1
    3
    5
    7
    9
    

    Python for 循环中的 enumerate 函数

    在 Python 中,enumerate 函数与 for 循环结合使用,可以遍历列表(或其他可迭代对象)并在每次迭代中访问索引和对应的项。这在处理列表时非常有用,特别是当你需要知道列表中每个项目的索引位置时。

    基本语法
    for index, item in enumerate(iterable):
        # 代码块
    
  • index:当前项的索引。
  • item:当前项的值。
  • iterable:可迭代对象,如列表、元组、字符串等。
  • 示例
    # 样例列表
    fruits = ["apple", "banana", "cherry", "date"]
    
    # 使用 enumerate 在 for 循环中
    for index, fruit in enumerate(fruits):
        print(f"Index {index}: {fruit}")
    
    解释
    1. 初始化列表

      fruits = ["apple", "banana", "cherry", "date"]
      

      这里,fruits 列表被初始化为包含四个水果名称。

    2. 使用 enumerate 函数

      for index, fruit in enumerate(fruits):
      

      enumerate(fruits) 返回一个枚举对象,其中包含列表中每个项目的索引和值。for 循环遍历这些枚举对象,将索引和值分别解包到 indexfruit 变量中。

    3. 处理和打印

      print(f"Index {index}: {fruit}")
      

      在每次迭代中,打印当前项的索引和对应的水果名称。

    输出
    Index 0: apple
    Index 1: banana
    Index 2: cherry
    Index 3: date
    

    Python for 循环中的 else 子句

    在 Python 中,for 循环可以有一个 else 子句。这个 else 子句在循环正常完成所有迭代时执行,而不是在循环被 break 语句提前终止时执行。这在区分循环是否完成了所有迭代或提前退出时非常有用。

    示例
    # 样例列表
    numbers = [1, 2, 3, 4, 5]
    
    # 使用 else 在 for 循环中
    for number in numbers:
        if number % 7 == 0:
            print(f"Found a multiple of 7: {number}")
            break
    else:
        print("No multiples of 7 found in the list")
    
    解释
    1. 初始化列表

      numbers = [1, 2, 3, 4, 5]
      

      这里,numbers 列表被初始化为包含从 1 到 5 的整数。

    2. 使用 for 循环

      for number in numbers:
      

      for 循环遍历 numbers 列表中的每个数字。

    3. 条件检查

      if number % 7 == 0:
          print(f"Found a multiple of 7: {number}")
          break
      

      在每次迭代中,检查当前数字是否是 7 的倍数。如果是,则打印消息并使用 break 语句终止循环。

    4. else 子句

      else:
          print("No multiples of 7 found in the list")
      

      如果循环正常完成所有迭代(即没有执行 break 语句),则执行 else 子句中的代码。

    输出

    由于 numbers 列表中没有 7 的倍数,输出将是:

    No multiples of 7 found in the list
    

    Python 中的嵌套 for 循环

    嵌套循环是指在一个循环内部再嵌套另一个循环。在 Python 中,你可以将任何类型的循环嵌套在另一个循环内。嵌套循环常用于处理多维数据结构,如二维数组或生成复杂的输出格式。

    示例
    # 外层循环用于行
    for i in range(1, 6):
        # 内层循环用于列
        for j in range(1, 6):
            print(f"{i * j:2}", end=" ")
        print()  # 每行结束后换行
    
    解释
    1. 外层循环

      for i in range(1, 6):
      

      外层循环遍历从 1 到 5 的范围,代表乘法表的行。

    2. 内层循环

      for j in range(1, 6):
      

      内层循环也遍历从 1 到 5 的范围,代表乘法表的列。

    3. 打印乘积

      print(f"{i * j:2}", end=" ")
      

      计算当前行和列的乘积 i * j,并使用 f-string 格式化输出,确保每个数字占两个字符宽度,并用空格分隔。

    4. 换行

      print()
      

      内层循环完成后,打印一个新行,以便开始下一行的输出。

    输出
     1  2  3  4  5 
     2  4  6  8 10 
     3  6  9 12 15 
     4  8 12 16 20 
     5 10 15 20 25 
    

    Python for 循环中的 pass 语句

    在 Python 中,pass 语句是一个空操作,执行时什么也不做。它通常用作尚未编写代码的占位符,或者用于创建最小化的函数体,这些函数体目前不需要执行任何操作。

    示例
    # 示例 1:`pass` 语句在函数中的使用
    def placeholder_function():
        pass
    
    # 示例 2:`pass` 语句在循环中的使用
    for i in range(5):
        if i % 2 == 0:
            pass  # 占位符,用于未来代码
        else:
            print(f"Odd number: {i}")
    
    解释
    1. 定义空函数

      def placeholder_function():
          pass
      

      placeholder_function 被定义,但由于 pass 语句的存在,该函数实际上什么也不做。这在函数尚未实现具体功能时非常有用,可以避免语法错误。

    2. 使用 pass 语句在循环中

      for i in range(5):
          if i % 2 == 0:
              pass  # 占位符,用于未来代码
          else:
              print(f"Odd number: {i}")
      
    3. 外层循环for i in range(5) 遍历从 0 到 4 的范围。
    4. 条件检查if i % 2 == 0 检查当前数字是否为偶数。
    5. 如果是偶数,pass 语句被执行,表示这里将来可能会添加代码,但目前不做任何操作。
    6. 如果是奇数,打印当前数字。
    输出
    Odd number: 1
    Odd number: 3
    

    Python for 循环中的字典

    在 Python 中,可以使用 for 循环遍历字典的键和值。字典的 items 方法返回一个视图对象,该对象显示字典中键值对的列表,可以在 for 循环中使用。

    示例
    # 样例字典
    student_grades = {
        "Alice": 85,
        "Bob": 90,
        "Charlie": 78,
        "Diana": 92
    }
    
    # 使用 for 循环遍历字典项
    for student, grade in student_grades.items():
        print(f"{student}: {grade}")
    
    解释
    1. 初始化字典

      student_grades = {
          "Alice": 85,
          "Bob": 90,
          "Charlie": 78,
          "Diana": 92
      }
      

      这里,student_grades 字典被初始化为包含四个学生的名字和他们的成绩。

    2. 使用 items 方法

      for student, grade in student_grades.items():
      

      student_grades.items() 返回一个包含键值对的视图对象。for 循环遍历这些键值对,将键和值分别解包到 studentgrade 变量中。

    3. 打印键和值

      print(f"{student}: {grade}")
      

      在每次迭代中,打印学生的姓名和他们的成绩。

    输出
    Alice: 85
    Bob: 90
    Charlie: 78
    Diana: 92
    

    Python for 循环中的元组

    在 Python 中,可以使用 for 循环遍历包含元组的列表。在每次迭代中,可以将元组解包成单独的变量。

    示例
    # 元组列表
    students = [
        ("Alice", 90),
        ("Bob", 85),
        ("Charlie", 92),
        ("David", 88)
    ]
    
    # 使用 for 循环遍历元组列表
    for name, grade in students:
        print(f"{name} scored {grade}")
    
    解释
    1. 初始化元组列表

      students = [
          ("Alice", 90),
          ("Bob", 85),
          ("Charlie", 92),
          ("David", 88)
      ]
      

      这里,students 列表被初始化为包含四个元组,每个元组包含一个学生的姓名和成绩。

    2. 使用 for 循环遍历元组列表

      for name, grade in students:
      

      for 循环遍历 students 列表中的每个元组,将元组中的第一个元素解包到 name 变量中,第二个元素解包到 grade 变量中。

    3. 打印姓名和成绩

      print(f"{name} scored {grade}")
      

      在每次迭代中,打印学生的姓名和他们的成绩。

    输出
    Alice scored 90
    Bob scored 85
    Charlie scored 92
    David scored 88
    

    Python for 循环中的 zip 函数

    在 Python 中,zip 函数允许你在并行中迭代多个可迭代对象(如列表、元组等),将它们的元素组合成元组。这在同时处理多个序列时非常有用。

    示例
    # 样例列表
    names = ["Alice", "Bob", "Charlie"]
    ages = [25, 30, 35]
    
    # 使用 zip 在 for 循环中
    for name, age in zip(names, ages):
        print(f"{name} is {age} years old.")
    
    解释
    1. 初始化列表

      names = ["Alice", "Bob", "Charlie"]
      ages = [25, 30, 35]
      

      这里,names 列表包含三个名字,ages 列表包含三个年龄。

    2. 使用 zip 函数

      for name, age in zip(names, ages):
      

      zip(names, ages)namesages 列表中的元素配对,生成一个包含元组的迭代器。例如,zip(names, ages) 生成的迭代器包含 (("Alice", 25), ("Bob", 30), ("Charlie", 35))for 循环遍历这些元组,将每个元组中的第一个元素解包到 name 变量中,第二个元素解包到 age 变量中。

    3. 打印姓名和年龄

      print(f"{name} is {age} years old.")
      

      在每次迭代中,打印学生的姓名和他们的年龄。

    输出
    Alice is 25 years old.
    Bob is 30 years old.
    Charlie is 35 years old.
    

    常见问题解答(FAQs)

    1. 如何从 1 开始 for 循环?
      在 Python 中,要从 1 开始 for 循环,可以使用 range() 函数如下所示:

      for i in range(1, n):
          # 代码块
      

      这里,n 是终点,循环将从 1 开始,直到 n-1 结束。

    2. range 函数在 Python for 循环中的作用是什么?
      range() 函数生成一个数字序列,可以在 for 循环中用来迭代。它最多接受三个参数:start(起始值)、stop(结束值)和 step(步长),并返回一个从 start(包含)到 stop(不包含)的不可变数字序列。

    3. start:可选参数,默认为 0。
    4. stop:必填参数,表示生成序列的结束值(不包含)。
    5. step:可选参数,默认为 1。
    6. 示例:

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

      输出:

      1
      3
      5
      7
      9
      
    7. for 循环中的 i 是什么?
      for 循环中的 i 是一个循环变量,在每次迭代中取序列或可迭代对象中的一个值。它通常用作计数器或引用序列中的元素。

      示例:

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

      输出:

      0
      1
      2
      3
      4
      
    8. 循环的公式是什么?
      虽然没有固定的“公式”来描述循环,但循环通常遵循以下结构:

      for variable in iterable:
          # 代码块
      

      循环会为可迭代对象(如列表、范围等)中的每个项目执行代码块。

      示例:

      my_list = [1, 2, 3, 4, 5]
      for item in my_list:
          print(item)
      

      输出:

      1
      2
      3
      4
      5
      
    9. 如何在 Python 中创建列表?
      在 Python 中,可以通过在方括号中放置逗号分隔的值来创建列表。例如:

      my_list = [1, 2, 3, 4, 5]
      

      列表可以包含不同类型的数据元素,包括数字、字符串和其他列表。

      示例:

      mixed_list = [1, "apple", [2, 3], True]
      print(mixed_list)
      

      输出:

      [1, 'apple', [2, 3], True]
      

    总结

    在这篇教程中,我们深入探讨了 Python 强大且灵活的 for 循环,并学习了如何有效地使用 enumeratezip 等函数来遍历列表和其他可迭代对象。通过掌握这些技术,你可以编写更高效、更易读的代码,从而提升你的编程技能。

    主要内容回顾
    1. 从 1 开始的 for 循环

    2. 使用 range(1, n) 可以从 1 开始迭代到 n-1
    3. 示例:
      for i in range(1, 6):
          print(i)
      
    4. range 函数

    5. range(start, stop, step) 生成一个从 startstop-1 的数字序列,步长为 step
    6. 示例:
      for i in range(0, 10, 2):
          print(i)
      
    7. enumerate 函数

    8. enumerate(iterable) 返回一个包含索引和值的枚举对象,方便在循环中同时获取索引和值。
    9. 示例:
      fruits = ["apple", "banana", "cherry"]
      for index, fruit in enumerate(fruits):
          print(f"Index {index}: {fruit}")
      
    10. zip 函数

    11. zip(*iterables) 将多个可迭代对象的元素配对,生成一个包含元组的迭代器。
    12. 示例:
      names = ["Alice", "Bob", "Charlie"]
      ages = [25, 30, 35]
      for name, age in zip(names, ages):
          print(f"{name} is {age} years old.")
      
    13. 嵌套循环

    14. 嵌套循环是在一个循环内部再嵌套另一个循环,常用于处理多维数据结构。
    15. 示例:
      for i in range(1, 6):
          for j in range(1, 6):
              print(f"{i * j:2}", end=" ")
          print()
      
    16. pass 语句

    17. pass 是一个空操作,用于占位,表示这里将来可能会添加代码,但目前不需要执行任何操作。
    18. 示例:
      for i in range(5):
          if i % 2 == 0:
              pass  # 占位符,用于未来代码
          else:
              print(f"Odd number: {i}")
      

    作者:疯一样的码农

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python For循环

    发表回复