day13_迭代器

1、迭代器是什么?

迭代是一个重复的过程,每一次重复都是基于上次结果而来的,单纯的重复并不是迭代

list=[1,2,3,4]
def iterator(item):
    i=0
    while i < len(item):
        print(list[i])
i+=1 iterator([
1,2,3,4])

2、为什么要有迭代器?

列表、元组、字符串类型可基于索引迭代器取值的方式,对于没有索引的字典、集合、文件则不适用

3、迭代器用来干啥?

3.1 分类

可迭代的对象:在python中 但凡内置中有__iter__方法的对象都是可迭代的对象(字符串、列表、元组、字典、集合、文件)

迭代器对象:既内置有__iter__方法,又内置又__next__方法的对象,执行可迭代对象的__iter__方法得到的就是内置的迭代器对象(文件对象本身就是迭代器对象)

注意:

迭代器对象一定是可迭代对象,反之则不然

info={"name":"sun","sex":"male"}
info_iter=info.__iter__()
print(info_iter)    #<dict_keyiterator object at 0x00000217D1257778>
res=info_iter.__next__()
print(res)    #取key值

#⭐一旦迭代器取值干净,若继续取值则会抛出异常
# StopIteration
info=[1,2,3,4]
while True:
    try:
        print(info_iter.__next__())
    except StopIteration
        break
异常解决

3.2 迭代器对象

执行迭代器对象的__next__得到的是迭代器下一个值

执行迭代器对象的__iter__得到的仍然是迭代器本身

3.3 迭代器对象的优缺点

优点:① 提供了一种通用的、可以不依赖索引的迭代取值方式

           ② 迭代器对象更加节省内存(同一时间,内存中只有一行数据)

缺点:①迭代器的取值不如按照索引取值的方式灵活,它只可往后取而不可往前退

           ②无法预测迭代器值的个数

原文地址:https://www.cnblogs.com/Smart1san/p/9174116.html