python-3 迭代器

迭代器(理解两个概念:1.可迭代对象 2.迭代器)

可迭代对象与迭代器对比 总结:
1. 可迭代对象是一个操作方法多,比较直观,存储数据相对少(比如几百万个对象,8G内存是可以承受的) 的一个数据集
2. 当你侧重于对数据可以灵活处理,并且内存足够,可将数据集设置为可迭代对象
3. 迭代器是一个非常省内存,可以记录取值位置,可以直接通过循环+next方法取值,但是不直观,操作方法比较单一的数据集
#可迭代对象
l1 = [11,22,33,44,55,66,77]
obj = l1.__iter__()
for i in range(4):
    print(obj,obj.__next__())

可迭代对象:字面意思可以循环更新的一个实实在在的值。专业角度:内部含有__iter__方法的对象称为可迭代对象
判断一个对象是否是可迭代对象,就用dir()方法去查看该对象是否包含__iter__方法
常见可迭代对象: str list tuple dict set range()

可迭代对象优缺点:

​ 优点:
​ 1.存储的数据直接能显示,比较直观;

​ 2.拥有的方法比较多,操作方便
​ 缺点:
​ 1.内存占用高

​ 2.不能直接通过for循环,不能直接取值(索引,key)

a1 = 'bb'
print(dir(a1))
print('__iter__' in dir(a1))    #运算符 in,布尔
迭代器优缺点:

​ 迭代器的优点(文件句柄案例,100G文件撑爆内存,包括readlines()方法):
​ 1.节省内存
​ 2.惰性机制,next一次,去一个值,绝不多取
​ 迭代器的缺点:
​ 1.不能直观的查看里面的数据
​ 2.取值时不走回头路,只能一直向下取值

可迭代对象转化成迭代器:举例

s1 = 'lskdjfljsd'
obj = iter(s1)  #s1.__iter__()  等同于
print(obj)
print(next(obj))    #print(obj.__next__())  等同于
posted @ 2020-02-19 21:48  冰冷的火  阅读(61)  评论(0)    收藏  举报