day13_迭代器
Posted smart1san
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 迭代器对象的优缺点
优点:① 提供了一种通用的、可以不依赖索引的迭代取值方式
② 迭代器对象更加节省内存(同一时间,内存中只有一行数据)
缺点:①迭代器的取值不如按照索引取值的方式灵活,它只可往后取而不可往前退
②无法预测迭代器值的个数
以上是关于day13_迭代器的主要内容,如果未能解决你的问题,请参考以下文章