为了账号安全,请及时绑定邮箱和手机立即绑定

Python中的循环与迭代工具入门:轻松掌握循环技巧

Python中的循环和迭代工具介绍

Python 提供了让重复任务变得容易管理的工具。它们包括循环和迭代工具。无论是遍历序列、反复检查条件,还是高效处理大量数据,这些工具都能帮到你。

本指南将带你了解 Python 的循环结构,通过实例展示,并解释在什么情况下应该使用每一种循环。

Python中的循环类型有哪些:
1. for 循环

for 循环当你知道要遍历的序列或范围时非常理想。它可以处理列表、元组、字典、集合(set)和字符串。

示例:遍历列表中的元素

loops_demo.py 中:

# 遍历列表

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(f"我超爱 {fruit}")

使用场合:
在处理已知集合或范围内的项目(如处理一个列表或生成序列等)时,你可以使用 for 循环。

2. 现在我们来聊聊while 循环吧

while 循环基于条件,只要条件为 True,它就会继续执行。

数数到十的例子: 数到十
# loops_demo.py

# 使用 while 循环进行计数
count = 1
while count <= 10:
    print(f"当前计数: {count}")
    count += 1

何时使用:
当迭代次数不确定或依赖于运行时条件(例如用户输入或动态计算)时,此时应选择使用 while 循环。

3 无限循环

无限循环会一直运行,除非被明确中断,。虽然它不是一种单独的类型,但可以通过使用 while 循环来实现。

例子:带有 BREAK 关键字的无限循环:

注:这里的 BREAK 保持不变,因为它可能是指代码中的关键字或特定术语。

    # loops_demo.py

    # 无限循环,等待用户输入
    while True:
        user_input = input("输入 'stop' 来结束: ").strip().lower()
        if user_input == "stop":
            print("循环结束了。")
            break
        print(f"你刚刚输入的是: {user_input}")

使用时机:
无限循环在事件驱动的程序(如服务器或游戏)中很实用。一定要设置退出条件(例如 break),以避免意外情况。

基于控制结构加强循环
1. 休息

break 关键字会提前结束循环。

例子:退出循环
    # loops_demo.py

    # 在满足特定条件时退出
    for number in range(10):  
        if number == 5:  
            print("在5处中断循环")  
            break  
        print(number)

使用时机:
当你希望根据特定条件结束循环时使用 break

2. 接着来

continue 语句跳过本次循环体中的剩余代码,并直接进入下一次循环。

示例:跳过单数
    # loops_demo.py

    # 跳过奇数,只打印偶数
    for number in range(1, 11):
        if number % 2 != 0:
            continue
        print(f'偶数:{number}')

使用时机:
当你需要跳过某些循环迭代但不想中断循环时,Continue 非常有用。

3. else语句与循环

在 Python 中,循环可以有一个 else 子句。除非循环被 break 语句提前终止,否则 else 子句会在循环结束后执行。

示例:完成循环
    # loops_demo.py

    # 这里我们检查循环是否因为条件而中断
    for number in range(5):
        if number == 6:
            break
    else:
        print("没有提前退出循环")

使用时机:
else块非常适合用来处理这种情况:当循环正常结束时的逻辑。

选择正确的循环
  1. For 循环:
    它简洁明了,适用于大多数场景。
  2. While 循环:
    虽然它灵活,但需要小心管理条件,以免陷入无限循环。
  3. 无限循环:
    当你需要构建一个需要持续运行的系统(例如服务器进程)时,可以使用。确保有可靠的退出机制。

除了循环之外,Python 还提供了一系列工具和技术来处理重复任务。在某些场合下,这些工具还能补充甚至替代传统的循环结构。

1. 列表解析

列表生成式是一种通过遍历一个可迭代对象,并可选地应用条件或进行转换来简洁生成列表的方法。

数字的平方示例
    # loops_demo.py
    # 生成一个平方数的列表,比如0到9的平方
    # 生成0到9的平方数列表
    squares = [x ** 2 for x in range(10)]
    print(squares) # 打印平方数列表
    # 这将打印出平方数列表

为什么使用它?
列表生成式比传统的for循环更简洁明了,通常更快。

2. 生成器表达式(Generator Expressions)

生成器表达式与列表生成式类似,不过每次迭代生成一个值,而不是一次性将整个列表加载到内存中。

示例:平方的和
    # loops_demo.py
    # 计算前10个数字的平方和
    sum_of_squares = sum(x ** 2 for x in range(10))  # 平方和总和
    print(sum_of_squares)  # 输出平方和总和

为什么使用它?
生成器内存效率高,且适合处理大规模数据集或无限长度的序列。

3. map() 函数

map() 函数会将指定的函数应用到可迭代的每个项目上,每个项目。

例子:把字符串改成大写
    # 字符串转大写.py
    # 将一个字符串列表转换成大写形式
    names = ["alice", "bob", "charlie"]
    uppercase_names = list(map(str.upper, names))
    print("打印大写的名字列表:", uppercase_names)

为什么使用它?
map() 是一个函数式编程工具,用于避免使用显式的循环来对可迭代集合中的每个元素应用函数。

  1. filter() 函数

filter()函数返回可迭代对象中满足给定条件的那些元素。

示例:筛选偶数

    # loops_demo.py
    # 过滤掉奇数
    numbers = range(10)
    even_numbers = filter(lambda x: x % 2 == 0, numbers)
    # 打印偶数列表
    print(list(even_numbers))

为什么使用它:
当你需要根据某个条件筛选元素而不需要写一个完整的循环时,filter() 非常有用。

5. reduce() 函数

作为functools模块的一部分,reduce()函数会将一个函数应用到可迭代对象的每个元素上,最终将其缩减为一个单一值。

示例:将所有数字相乘
    # loops_demo.py
    from functools import reduce

    # 将列表中的所有数字乘起来
    numbers = [1, 2, 3, 4]
    product = reduce(lambda x, y: x * y, numbers)  # reduce函数用于累积列表中的元素,此处将所有数字相乘
    print(product)

为什么使用它呢? reduce() 可以将一系列操作合并为一个结果,比如对一系列数值求和或相乘。

6. itertools 模块

itertools 模块提供了一组处理迭代器相关的工具,包括无限的序列、组合以及排列。

示例:生成排列组合
    # loops_demo.py 
    from itertools import permutations 

    # 生成列表的所有排列
    items = [1, 2, 3]
    all_permutations = list(permutations(items))
    print(all_permutations)  # 输出所有排列

为什么使用它?
itertools非常适用于处理复杂的循环任务,例如生成组合、计算笛卡尔积或遍历无限序列。

7. 集合和字典推导

类似于列表生成式,这种方式让你以一种简洁的方式创建集合(set)和字典。

例子:从清单创建字典
    # loops_demo.py
    # 生成一个字典,用数字作为键,对应的平方作为值。
    # 定义一个名为squares_dict的字典,用于存放数字及其平方
    squares_dict = {x: x ** 2 for x in range(5)}
    print(squares_dict)

为什么要用它?
它们提供了一种干净且易于阅读的方式来编程集合和字典。

8. 递归函数,

递归允许一个函数调用自身来分解问题为更小的子问题,从而常常消除了显式循环的需要。

例子:计算阶乘
    # 循环示例.py
    # 用于计算阶乘的递归函数
    def factorial(n):
        if n == 0:
            return 1
        return n * factorial(n - 1)

    # 递归计算n的阶乘
    print(factorial(5))  # 输出: 120

为什么使用它?
递归非常适合可以分解成更小的重复任务的问题,例如遍历树结构或解决数学难题。

9, 内置函数

Python 提供了如 sum()max()min()all() 这些内置函数,可以用来对数据进行处理,无需显式循环。

例子:计算列表总和
    # 计算并打印数字列表的总和
    numbers = [1, 2, 3, 4, 5]  
    total = sum(numbers)  
    print(total)

为什么选择它?
这些功能可以高效且简洁地替代循环。

10 异步任务处理并行任务

asyncio 模块负责异步编程,让任务能够并行执行而不是一个接一个地执行。

例子:同时运行多个异步操作
    # loops_demo.py
    import asyncio

    async def say_hello(name):
        await asyncio.sleep(1)
        print(f"Hello, {name}")

    # 同时运行任务
    async def main():
        await asyncio.gather(say_hello("Alice"), say_hello("Bob"))

    asyncio.run(main())

为什么要用它?
异步工具对于API调用或数据库操作这类I/O任务来说非常重要。

感谢您阅读这篇文章。希望这篇文章对您既有帮助又有启发。如果您有任何问题,或者想要提出新的Python代码示例或未来教程主题,请随时联系我。您的反馈和建议总是非常欢迎。

祝你编码开心!
C. C. Python

简单易懂 🚀

感谢您加入In Plain English社区!,在您离开之前:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消