加入收藏 | 设为首页 | 会员中心 | 我要投稿 潍坊站长网 (https://www.0536zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python迭代器深入分析

发布时间:2021-12-05 10:28:16 所属栏目:教程 来源:互联网
导读:1、迭代器 (1)可迭代对象: 1 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个对象具有什么方法,dir()会返回一个列表,这个列表中含有该对象的以字符串的形式的所有方法名) lst.__iter__() dict.__iter__() 2 可迭代对象的
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()

(编辑:潍坊站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读