Python For循环

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

Python 的 for 循环详解

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

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

输出

复制代码
1
2
3
4
5

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

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

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

python 复制代码
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 语句,循环将停止迭代,程序控制会转移到循环后的下一条语句。

示例
python 复制代码
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 语句被执行时,循环不会终止,而是跳过当前迭代中剩余的代码,直接进入下一次迭代。

示例
python 复制代码
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(步长)。

基本语法
python 复制代码
range(start, stop, step)
  • start:可选参数,默认为 0。指定生成序列的起始值。
  • stop:必填参数。指定生成序列的结束值(不包括此值)。
  • step:可选参数,默认为 1。指定生成序列的步长。
示例
python 复制代码
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 循环结合使用,可以遍历列表(或其他可迭代对象)并在每次迭代中访问索引和对应的项。这在处理列表时非常有用,特别是当你需要知道列表中每个项目的索引位置时。

基本语法
python 复制代码
for index, item in enumerate(iterable):
    # 代码块
  • index:当前项的索引。
  • item:当前项的值。
  • iterable:可迭代对象,如列表、元组、字符串等。
示例
python 复制代码
# 样例列表
fruits = ["apple", "banana", "cherry", "date"]

# 使用 enumerate 在 for 循环中
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")
解释
  1. 初始化列表

    python 复制代码
    fruits = ["apple", "banana", "cherry", "date"]

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

  2. 使用 enumerate 函数

    python 复制代码
    for index, fruit in enumerate(fruits):

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

  3. 处理和打印

    python 复制代码
    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 语句提前终止时执行。这在区分循环是否完成了所有迭代或提前退出时非常有用。

示例
python 复制代码
# 样例列表
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. 初始化列表

    python 复制代码
    numbers = [1, 2, 3, 4, 5]

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

  2. 使用 for 循环

    python 复制代码
    for number in numbers:

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

  3. 条件检查

    python 复制代码
    if number % 7 == 0:
        print(f"Found a multiple of 7: {number}")
        break

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

  4. else 子句

    python 复制代码
    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 中,你可以将任何类型的循环嵌套在另一个循环内。嵌套循环常用于处理多维数据结构,如二维数组或生成复杂的输出格式。

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

    python 复制代码
    for i in range(1, 6):

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

  2. 内层循环

    python 复制代码
    for j in range(1, 6):

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

  3. 打印乘积

    python 复制代码
    print(f"{i * j:2}", end=" ")

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

  4. 换行

    python 复制代码
    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 语句是一个空操作,执行时什么也不做。它通常用作尚未编写代码的占位符,或者用于创建最小化的函数体,这些函数体目前不需要执行任何操作。

示例
python 复制代码
# 示例 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. 定义空函数

    python 复制代码
    def placeholder_function():
        pass

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

  2. 使用 pass 语句在循环中

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

Python for 循环中的字典

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

示例
python 复制代码
# 样例字典
student_grades = {
    "Alice": 85,
    "Bob": 90,
    "Charlie": 78,
    "Diana": 92
}

# 使用 for 循环遍历字典项
for student, grade in student_grades.items():
    print(f"{student}: {grade}")
解释
  1. 初始化字典

    python 复制代码
    student_grades = {
        "Alice": 85,
        "Bob": 90,
        "Charlie": 78,
        "Diana": 92
    }

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

  2. 使用 items 方法

    python 复制代码
    for student, grade in student_grades.items():

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

  3. 打印键和值

    python 复制代码
    print(f"{student}: {grade}")

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

输出
复制代码
Alice: 85
Bob: 90
Charlie: 78
Diana: 92

Python for 循环中的元组

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

示例
python 复制代码
# 元组列表
students = [
    ("Alice", 90),
    ("Bob", 85),
    ("Charlie", 92),
    ("David", 88)
]

# 使用 for 循环遍历元组列表
for name, grade in students:
    print(f"{name} scored {grade}")
解释
  1. 初始化元组列表

    python 复制代码
    students = [
        ("Alice", 90),
        ("Bob", 85),
        ("Charlie", 92),
        ("David", 88)
    ]

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

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

    python 复制代码
    for name, grade in students:

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

  3. 打印姓名和成绩

    python 复制代码
    print(f"{name} scored {grade}")

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

输出
复制代码
Alice scored 90
Bob scored 85
Charlie scored 92
David scored 88

Python for 循环中的 zip 函数

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

示例
python 复制代码
# 样例列表
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. 初始化列表

    python 复制代码
    names = ["Alice", "Bob", "Charlie"]
    ages = [25, 30, 35]

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

  2. 使用 zip 函数

    python 复制代码
    for name, age in zip(names, ages):

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

  3. 打印姓名和年龄

    python 复制代码
    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() 函数如下所示:

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

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

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

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

    示例:

    python 复制代码
    for i in range(1, 10, 2):
        print(i)

    输出:

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

    示例:

    python 复制代码
    for i in range(5):
        print(i)

    输出:

    复制代码
    0
    1
    2
    3
    4
  4. 循环的公式是什么?

    虽然没有固定的"公式"来描述循环,但循环通常遵循以下结构:

    python 复制代码
    for variable in iterable:
        # 代码块

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

    示例:

    python 复制代码
    my_list = [1, 2, 3, 4, 5]
    for item in my_list:
        print(item)

    输出:

    复制代码
    1
    2
    3
    4
    5
  5. 如何在 Python 中创建列表?

    在 Python 中,可以通过在方括号中放置逗号分隔的值来创建列表。例如:

    python 复制代码
    my_list = [1, 2, 3, 4, 5]

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

    示例:

    python 复制代码
    mixed_list = [1, "apple", [2, 3], True]
    print(mixed_list)

    输出:

    复制代码
    [1, 'apple', [2, 3], True]

总结

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

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

    • 使用 range(1, n) 可以从 1 开始迭代到 n-1

    • 示例:

      python 复制代码
      for i in range(1, 6):
          print(i)
  2. range 函数

    • range(start, stop, step) 生成一个从 startstop-1 的数字序列,步长为 step

    • 示例:

      python 复制代码
      for i in range(0, 10, 2):
          print(i)
  3. enumerate 函数

    • enumerate(iterable) 返回一个包含索引和值的枚举对象,方便在循环中同时获取索引和值。

    • 示例:

      python 复制代码
      fruits = ["apple", "banana", "cherry"]
      for index, fruit in enumerate(fruits):
          print(f"Index {index}: {fruit}")
  4. zip 函数

    • zip(*iterables) 将多个可迭代对象的元素配对,生成一个包含元组的迭代器。

    • 示例:

      python 复制代码
      names = ["Alice", "Bob", "Charlie"]
      ages = [25, 30, 35]
      for name, age in zip(names, ages):
          print(f"{name} is {age} years old.")
  5. 嵌套循环

    • 嵌套循环是在一个循环内部再嵌套另一个循环,常用于处理多维数据结构。

    • 示例:

      python 复制代码
      for i in range(1, 6):
          for j in range(1, 6):
              print(f"{i * j:2}", end=" ")
          print()
  6. pass 语句

    • pass 是一个空操作,用于占位,表示这里将来可能会添加代码,但目前不需要执行任何操作。

    • 示例:

      python 复制代码
      for i in range(5):
          if i % 2 == 0:
              pass  # 占位符,用于未来代码
          else:
              print(f"Odd number: {i}")
相关推荐
普通网友4 分钟前
pytest一些常见的插件
开发语言·python·pytest
时空系13 分钟前
Python 高性能高压缩打包器 —— 基于 JianPy 语义分析引擎
python
cndes35 分钟前
给Miniconda换源,让包下载更迅速
开发语言·python
Metaphor6921 小时前
使用 Python 添加、隐藏和删除 PDF 图层
python·pdf·图层
丨白色风车丨1 小时前
【Python 计算机视觉】基于 Dlib+OpenCV 实现实时人眼疲劳检测(闭眼预警)
python·opencv·计算机视觉
嘘嘘出差2 小时前
Python 爬虫入门实战:爬取豆瓣电影 Top 250
开发语言·爬虫·python
爱写代码的倒霉蛋2 小时前
实现协程的三种方式
开发语言·python
崖边看雾2 小时前
记录Python学习——第一章环境安装下载(Windows)
windows·python·学习·pycharm
用户298698530143 小时前
Python 实现 Excel 到 ODS、XPS、PostScript 及 PDF/A-1b 的格式转换
后端·python·excel
本地化文档3 小时前
xlwings-docs-l10n
python·github·excel·gitcode·sphinx