Python之第十三天的努力--迭代器2
01 迭代器2
-
迭代器定义:
-
字面意思:更新迭代,器:工具。:可更新迭代的工具
-
专业角度:内部含有
'__iter__'方法并含有
'__next__'方法的对象就是迭代器
-
可以判断是不是迭代器:
'__iter__'and
'__next__'在不在dir(对象)
-
# 文件句柄 with open('文件1',encoding='utf-8',mode='w') as f1: print(('__iter__'in dir(f1)) and ('__next__'in dir(f1))) # True
-
-
可迭代对象如何转化成迭代器,迭代器的取值:
-
可迭代对象转化成迭代器
iter(对象) # 对象.__iter__() -
取值
next(obj) # 对象.__next__() -
# 可迭代对象可以转化为迭代器 # s1 = 'asdfg' # obj = iter(s1) # s1.__iter__() # print(obj) # <str_iterator object at 0x0306DEF0> # print(next(obj)) # a # print(next(obj)) # s # print(next(obj)) # d # print(next(obj)) # f # print(next(obj)) # g # l1 = [11,22,33,44] # obj = iter(l1) # print(next(obj)) # 11 # print(next(obj)) # 22 # print(next(obj)) # 33 # print(next(obj)) # 44
-
-
优点
- 节省内存。
- 惰性机制。
-
缺点
- 速度慢
- 不走回头路
-
可迭代对象与迭代器的对比
-
可迭代对象是一个操作方法比较多,比较直观,存储数据相对少(几百万个对象,8G内存是可以承受的)的一个数据集。
-
当你侧重于对于数据可以灵活处理,并且内存空间足够,将数据集设置为可迭代对象是明确的选择。
-
-
迭代器是一个非常节省内存,可以记录取值位置,可以直接通过循环+next方法取值,但是不直观,操作方法比较单一的数据集。
-
当你的数据量过大,大到足以撑爆你的内存或者你以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。
-
-
利用while循环模拟for循环对可迭代对象进行取值的机制。
l1 = [1,2,3,4,5,6,7,8,9,10,11,12] obj = iter(l1) while 1: try: print(next(obj)) except StopIteration: break

浙公网安备 33010602011771号