python学习笔记,视频day18-迭代器、

冷暖自知 提交于 2019-12-03 00:15:02

一、递归:函数自己调用自己

      举例:问路

二、迭代:每次循环得到的结果都是依赖上一次而来的

      举例:生宝宝

三、迭代器协议

  1. 迭代器协议:对象必须提供一个next方法,执行该方法姚蜜返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退)
  2. 可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法)
  3. 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max)使用迭代器协议访问对象

四、for循环

(字符串,列表,元组,字典,集合,文件对象)这些都不是可迭代对象,只不过在for循环时,调用了他们内部的_iter_方法,把他们变成了可迭代对象然后for循环调用可迭代对象的_next_方法去取值,而且捕捉Stoplteration异常,终止迭代
l=[1,2,3,4]
iter_test=l.__iter__()#遵循迭代器协议转换成可迭代对象
print(iter_test)
print(iter_test.__next__())
print(iter_test.__next__())

# <list_iterator object at 0x00A1DE50>
# 1
# 2
#只用索引进行遍历,while循环无法遍历字典、集合
l=[1,2,3,4]
index=0
while index<len(l):
    print(l[index])
    index+=1
# 1
# 2
# 3
# 4
  • 集合
s={1,2,3}
iter_s=s.__iter__()
print(iter_s)
print(iter_s.__next__())
print(iter_s.__next__())
  • 字典
# 取keys值
dic={"a":1,"b":2}
iter_d=dic.__iter__()
print(iter_d.__next__())
# a
  • 文件
test.txt内容
22
3ed445
f=open("test.txt","r+")iter_f=f.__iter__()print(iter_f)print(iter_f.__next__(),end="")print(iter_f.__next__())
# 22# 3ed

 

 

 

06 python s3 day18 迭代器补充.ev4未看

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!