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__()) 等同于
珊瑚海

浙公网安备 33010602011771号