全网最详尽的Python遍历的高级用法,程序员必收藏!
off999 2025-06-10 17:26 108 浏览 0 评论
1.内置函数的高阶用法。
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16]
```
- **`filter()`**:筛选满足条件的元素。
```python
even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4]
```
- **`zip()`**:将多个可迭代对象合并为元组。
```python
a = [1, 2, 3]
b = ['a', 'b', 'c']
combined = list(zip(a, b)) # [(1, 'a'), (2, 'b'), (3, 'c')]
```
- **`enumerate()`**:同时获取索引和元素。
```python
for index, value in enumerate(numbers):
print(f"Index {index}: {value}")
```
---
#### 2. **迭代器与生成器**
- **生成器表达式**:节省内存的遍历方式。
```python
# 计算平方数的生成器
squares = (x**2 for x in range(5))
for num in squares:
print(num) 输出 #0,1,4,9,16
```
- **`yield`关键字**:创建自定义生成器。
```python
def my_generator(n):
for i in range(n):
yield i
gen = my_generator(3)
print(next(gen)) # 0
print(next(gen)) # 1
print(next(gen)) # 2
```
- **`__iter__()` 和 `__next__()`**:实现自定义迭代器。
```python
class MyIterator:
def __init__(self, max_value):
self.max_value = max_value
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max_value:
raise StopIteration
value = self.current
self.current += 1
return value
it = MyIterator(3)
for num in it:
print(num) # 输出0,1,2
```
---
#### 3. **列表推导式**
- 列表推导式是一种简洁的遍历方式,支持条件判断和嵌套循环。
```python
# 嵌套循环
matrix = [[1, 2], [3, 4]]
flattened = [num for row in matrix for num in row] # [1,2,3,4]
# 条件判断
even_squares = [x**2 for x in range(5) if x % 2 == 0] # [0,4,16]
```
---
#### 4. **多线程与异步遍历**
- **`threading`模块**:在多个线程中并行处理任务。
```python
import threading
def process_item(item):
print(f"Processing {item}")
items = [1, 2, 3, 4]
threads = []
for item in items:
thread = threading.Thread(target=process_item, args=(item,))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
```
- **`asyncio`库**:异步遍历和协程。
```python
import asyncio
async def process_item(item):
print(f"Processing {item}")
await asyncio.sleep(1)
async def main():
items = [1, 2, 3, 4]
tasks = [process_item(item) for item in items]
await asyncio.gather(*tasks)
asyncio.run(main())
```
---
#### 5. **其他高级技巧**
- **`itertools`模块**:提供高效的迭代工具。
```python
import itertools
# 无限迭代
counter = itertools.count(start=1)
for _ in range(3):
print(next(counter)) # 输出1,2,3
# 组合与排列
combinations = itertools.combinations([1,2,3], 2)
print(list(combinations)) # [(1,2), (1,3), (2,3)]
```
- **装饰器模式**:增强遍历功能。
```python
def log_decorator(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(f"Logged: {result}")
return result
return wrapper
@log_decorator
def get_item(index):
return f"Item {index}"
for i in range(3):
get_item(i)
# 输出:
# Logged: Item 0
# Logged: Item 1
# Logged: Item 2
Python的遍历机制非常灵活,可以通过内置函数、生成器、列表推导式、多线程和异步等方式实现高效和优雅的代码。选择合适的遍历方法取决于具体需求,例如性能优化、代码简洁性或并行处理等。
相关推荐
- tp路由器无线设置最佳参数(tp-link路由器网络参数怎么设置)
-
1,在浏览器中输入192.168.1.1,进入后台管理,输入用户名和密码登录。2,先连接外网。在左边选择“网络参数”下的“WAN口设置”。3,并在右边选择一种网络方式,如“PPPOE”并输入帐号和密码...
- amd的cpu天梯图(amd全系列cpu天梯图)
-
低压版最高端是“FX-7500”,四核心,4MB二级缓存,CPU频率为2.1-3.3GHz,RadeonR7GPU六个计算单元384个流处理器,频率496-553MHz,内存支持DDR3-1600...
- 免费恢复微信好友软件(免费恢复微信好友软件哪个好用)
-
1.不存在免费的微信找回删除好友软件。2.因为微信的好友删除是一种数据操作,需要访问微信服务器上的数据,而微信官方并没有提供找回删除好友的功能,所以任何软件都无法实现这个功能。此外,使用未知来源的...
- 台式电脑突然断电后无法开机
-
首先,突然断电导致电脑不能正常开机,并不一定是系统故障,根据以下的方法进行排除。1、在断开电源的前提条件下,打开主机箱侧盖将内存条取下来,更换内存安装插槽的位置。2、找到主板电池,并且将主板电池取下来...
- 网易邮箱163登录下载(网易邮箱163登录下载不了)
-
手机163的登录入口163邮箱官网入口是;https://smart.mail.163.com/login.htm网易邮箱注册方法;1在浏览器搜索“网易邮箱”。2进入网易邮箱官网https://sma...
- hotmail邮箱怎么样
-
微软关闭的是中国大陆地区以外的WindowsLiveMessenger客户端服务和邮箱服务完全无关.所以不止中国大陆,全球的hotmail都可以用的.hotmail邮箱目前还是可以用的,不过...
- 手机怎么连路由器上网设置(用手机连接路由器设置)
-
手机无线路由器的桥接方法如下1、在确保手机已连接到当前WIFI网络的情况下,打开手机设置。然后在设置页面中,点击“移动网络”进入。2、在移动网络设置界面,点击“移动网络共享”进入。3、在移动网络共享设...
- 截图电脑(截图电脑怎么操作)
-
方法一:系统自带截图具体操作:同时按下电脑的自带截图键【Windows+shift+S】,可以选择其中一种方式来截取图片:截屏有矩形截屏、任意形状截屏、窗口截屏和全屏截图。?方法二:QQ截图具体操作:...
- 显卡参数对比(rtx50系列显卡参数对比)
-
在规格方面:显卡容量大(大容量显卡在大型游戏中比较有用);显卡速度快(比如DDR5比DDR3快);核心频率高(比如4830在500MHZ左右,4870能到700多)这是显卡很重要的参数;还有流处理器...
- n卡驱动下载官网(n卡驱动官网网址)
-
1可能下载不了。2可能的原因是网速不稳定或者网络连接不畅,还有就是可能是服务器维护或者更新的原因。3如果下载不了,可以尝试换一个时间或者尝试使用其他的下载方式或者下载其他版本的驱动。另外,也可以...
- android模拟器下载安装(安卓模拟器软件下载)
-
电脑版安卓模拟器可以通过网上下载并安装。首先选择一个安卓模拟器,比如NoxPlayer、BlueStacks、LDPlayer等,然后在官网或其他可靠的下载网站下载对应的安装包。下载完成后,双击安装包...
- win7明明是管理员却没有权限
-
答:win7没有管理员权限的解决方法。1.为Windows7的右键菜单添加取得所有权的菜单:具体实现的方法不难,将以下内容另存为文本文件; 2.然后修改该文件的扩展名为.reg,双击导...
- 电脑c盘格式化了怎么装系统(电脑c盘格式化后还能用吗)
-
C盘只有格式化才能中心装系统吗?不是的。C盘格式化是为了让C盘更清洁,这样装了的系统比较纯净的。没有系统来及,用起来更是的速度快。格式化(format)是指对磁盘或磁盘中的分区(partition)进...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
