迭代器

1,迭代器的定义:

       迭代器即是迭代取值的工具

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

 注意:

        单纯的重复并不是迭代

          while True:

               print('1111')#这是一个循环重复的过程

        迭代:
                l=['a','b','c']
                def iterator(item):
                 i=0
                 while i < len(item):
                        print(l[i])

                        i+=1

2、 为什么要有迭代器
    基于索引的迭代器取值方式只适用于列表、元组、字符串类型
    而对于没有索引的字典、集合、文件,则不在适用
    所以必须找到一种通用的并且不依赖于索引的迭代器取值方式=》迭代器

    迭代器适用于可迭代的类型

# 可迭代的对象:在python中但凡内置有__iter__方法的对象都是可迭代的对象

# 字符串、列表、元组、字典、集合、文件都是可迭代的对象

# num1=10
# num2=10.1
# s1='hello'
# l=[1,2,3]
# t=(1,2,3)
# d={'x':1}
# s2={1,2,3}
# f=open('a.txt','w')
# s1.__iter__
# l.__iter__
# t.__iter__
# d.__iter__
# s2.__iter__

# f.__iter__

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

#强调:

#1、迭代器对象一定是可迭代的对象,反之则不然

# info={'name':'egon','age':18,'is_beautiful':True,'sex':'male'}
# info_iter=info.__iter__()
# # print(info_iter)
#
# res1=info_iter.__next__()
# print(res1)
#
# res2=info_iter.__next__()
# print(res2)
#
# res3=info_iter.__next__()
# print(res3)
#
# res4=info_iter.__next__()
# print(res4)
#

# info_iter.__next__() # 一旦迭代器取值取干净,再继续取就会抛出StopIteration

#for循环:迭代器循环
# info={'name':'egon','age':18,'is_beautiful':True,'sex':'male'}
#in后跟的一定要是可迭代的对象
# for k in info: # info_iter=info.__iter__()
#     print(k)
# f=open('a.txt','r')
# for k in f:

#     print(k)

# 迭代器对象:指的是既内置有__iter__方法,又内置有__next__方法的对象
# 执行迭代器对象的__next__得到的是迭代器的下一个值

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

# iter_info=info.__iter__()
# # print(iter_info)
# print(iter_info is iter_info.__iter__() is iter_info.__iter__().__iter__().__iter__().__iter__().__iter__())
#总结迭代器对象的优缺点:
#优点:
#1、提供了一种通用的、可以不依赖索引的迭代取值方式

#2、迭代器对象更加节省内存

# 缺点:
#1、迭代器的取值不如按照索引的方式更灵活,因为它只能往后取不能往前退
#2、无法预测迭代器值的个数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值