【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。

本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。


一、迭代器与生成器

1.1 使用迭代器

迭代器是一个对象,它实现了__iter__()__next__()方法。通过迭代器,可以逐个访问序列中的元素。

my_list = [1, 2, 3]
it = iter(my_list)
print(next(it))  # 输出: 1
print(next(it))  # 输出: 2
print(next(it))  # 输出: 3
1.2 使用生成器

生成器通过yield关键字返回数据,可以节省内存。与迭代器不同的是,生成器在需要时才会生成数据。

def generate_numbers():
    for i in range(5):
        yield i

gen = generate_numbers()
for num in gen:
    print(num)

输出:

0  
1  
2  
3  
4

二、enumerate()zip()的高效应用

2.1 使用enumerate()获取索引和值

enumerate()让我们在遍历序列时同时获取元素及其索引。

fruits = ['苹果', '香蕉', '樱桃']
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

输出:

0: 苹果  
1: 香蕉  
2: 樱桃
2.2 使用zip()同时遍历多个序列

zip()可以将多个序列“拉链”在一起进行并行迭代。

names = ['Alice', 'Bob']
scores = [85, 90]
for name, score in zip(names, scores):
    print(f"{name} 的成绩是 {score}")

输出:

Alice 的成绩是 85  
Bob 的成绩是 90

三、列表推导式与字典推导式

3.1 列表推导式

列表推导式是一种简洁的方式创建列表。

squares = [x ** 2 for x in range(1, 6)]
print(squares)

输出:

[1, 4, 9, 16, 25]
3.2 字典推导式

字典推导式用于生成键-值对的字典。

squares_dict = {
   x: x ** 2 for x in range(1, 6)}
print(squares_dict)

输出:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

四、循环中的异常处理

在循环中进行异常捕获,确保代码即使遇到错误也能继续执行或优雅退出。

numbers = [1, 2, '三', 4]

for num in numbers:
    try:
        print(num ** 2)
    except TypeError:
        print(f"无法计算 {num} 的平方")

输出:

1  
4  
无法计算 三 的平方  
16

五、并行循环:concurrent.futuresasyncio

5.1 使用concurrent.futures进行并行处理

当需要同时处理多个任务时,可以利用ThreadPoolExecutor进行并行执行。

import concurrent.futures

def task(n):
    return n ** 2

with concurrent.futures.ThreadPoolExecutor() as executor:
    results = executor.map(task, range(5))

for result in results:
    print(result)

输出:

0  
1  
4  
9  
16
5.2 使用asyncio处理异步任务

asyncio适用于处理I/O密集型任务,如网络请求。

import asyncio

async def async_task(n):
    await asyncio.sleep(1)
    print(f"完成任务 {n}")

async def main():
    tasks = [async_task(i) for i in range(5)]
    await asyncio.gather(*tasks)

asyncio.run(main())

输出:

完成任务 0  
完成任务 1  
完成任务 2  
完成任务 3  
完成任务 4

六、循环的性能优化

6.1 使用生成器减少内存开销

当处理大量数据时,使用生成器可以有效节省内存。

def large_range():
    for i in range(1, 10**6):
        yield i

for num in large_range():
    if num > 10:
        break
    print(num)

输出:

1  
2  
3  
...  
10
6.2 减少不必要的循环嵌套

避免深层嵌套可以提升代码效率。

# 优化前
for i in range(100):
    for j in range(100):
        if i + j == 50:
            print(i, j)

# 优化后
for i in range(51):
    j = 50 - i
    print(i, j)

七、小结

本篇介绍了Python循环中的高级技巧,包括迭代器、生成器、enumerate()zip()的高效使用,以及列表与字典推导式。我们还探讨了如何通过异常处理保障代码稳定性,并展示了并发和异步任务的实现。此外,通过性能优化技巧,您将学会编写简洁高效的循环代码,在大型项目中实现更优雅的代码结构。

八、通知

💡即日起,本系列将暂停更新两个月,全力专注于《Mac畅玩鸿蒙与硬件》系列的连载内容。感谢您的理解与支持!


上一篇: 「Mac上学Python 29」基础篇10 - 循环结构与迭代控制

下一篇: 待定

目录
相关文章
|
8月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
1440 1
|
9月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
842 0
|
10月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
403 102
|
9月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
668 6
|
9月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
610 0
|
10月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
513 0
|
10月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
725 0
|
10月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
456 0
|
10月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
327 0
|
11月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
375 0

推荐镜像

更多