Python 入门之 Python三大器 之 迭代器
2024-09-07 17:18:02
Python 入门之 Python三大器 之 迭代器
1、迭代器
(1)可迭代对象:
<1> 只要具有__ iter __()方法就是一个可迭代对象
(我们可以通过dir()方法去判断一个对象具有什么方法,dir()会返回一个列表,这个列表中含有该对象的以字符串的形式的所有方法名)
lst.__iter__()
dict.__iter__()
<2> 可迭代对象的优点:
可以直观的查看里面的数据。
<3> 可迭代对象的缺点:
占用内存
可迭代对象不能迭代取值(除去索引,key以外)
(2)迭代器:工具
<1> 具有__ iter __ () 和 __ next __() 两个方法的就是迭代器
( iter() 和 __ ite r__() 是一样的 推荐使用iter() )
lst = [1,2,3,4,5]
l = lst.__iter__() # 将可迭代对象转换成迭代器
l.__iter__() # 迭代器指定__iter__()还是原来的迭代器
print(l.__next__()) # 1
print(l.__next__()) # 2
<2> 迭代器基于上一次停留的位置,进行取值
<3> 迭代器的优点:
惰性机制: 节省空间
<4>迭代器的缺点:
不能直接查看值,迭代器查看到的是一个迭代器的内存地址
一次性,用完就没有了
不能逆行(后退)
<5> 应用:
当你的数据量过大,大到足以撑爆你的内存或者你以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。(可参考为什么python把文件句柄设置成迭代器)。
(3)空间换时间:容器存储大量的元素,取值时间短,但是容器占用空间大
(4)时间换空间:迭代器就是节省了空间,但是取值时间较长
(5)for 循环的本质:(重点)
l1 = [1, 2, 3, 4, 5, 6]
obj = iter(l1) # 1 将可迭代对象转化成迭代器
while True: # 2,利用while循环,next进行取值
try:
print(next(obj))
except StopIteration: # 3,利用异常处理终止循环
break
(6)Python2和Python3中的区别:
pyhton3:
iter()和 __iter__() 都有
next()和__next__()都有
python2:
iter()
next()
最新文章
- Android数据加密之MD5加密
- 设计模式--外观模式Facade(结构型)
- 遍历map的常用方法
- Unity-WIKI 之 SplashScreen
- 【BZOJ 2440】[中山市选2011]完全平方数
- jquery mobile图片自适应屏幕
- wget www.baidu.com执行流程分析
- SSIS: 使用最大ID和最大日期来增量更新表
- 花括号中的json数据--->;转为数组array
- [转]配置 VIM 的 Go 语言开发环境
- 40+ Sublime Text 最佳插件汇总
- 自学Zabbix3.5.5-监控项item-User parameters(自定义key)
- 设计模式 -->; (5)适配器模式
- Asp.net Core的Swagger接口根据模块、版本分组
- linq给list集合数据分页
- XSS DOM 测试
- pycharm配置QtDesigner
- java高精度学习笔记
- 安装ORACLE_RAC遇到的问题与解决方法
- 26. The Greenhouse Effect and Its Consequences 温室效应及其后果
热门文章
- C#Regex中replace方法的替换自定义小数点后的内容
- 25.复杂链表的复制(python)
- webapi 参数的请求和接收
- SQL 行转列(列的值不规则的数目)
- R 常用代码段
- 关于同时可用git命令clone和TortoiseGit拉取代码不需要密码
- mysql中查看ef或efcore生成的sql语句
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap
- jQuery file upload cropper的流程
- Deepin 系统下设置Apache虚拟主机站点