码迷,mamicode.com
首页 > 其他好文 > 详细

day13_迭代器

时间:2018-06-12 17:48:07      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:opened   字符串类型   pen   取值   dict   iterator   pytho   tor   code   

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_迭代器

标签:opened   字符串类型   pen   取值   dict   iterator   pytho   tor   code   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!