函数,迭代器,生成器

迭代器:循环反馈的容器(集合类型)

——不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值

 

优点:不依赖索引,完成取值

缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)

 

可迭代对象:内置有__iter__()方法的对象,称之为可迭代对象

 

迭代器对象:内置有__next__()方法的对象,称之为迭代器对象。可以通过调用_next_()方法完成取值。

#迭代器即迭代的工具,那什么是迭代呢?
#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值
while True: #只是单纯地重复,因而不是迭代
    print('===>') 
    
l=[1,2,3]
count=0
while count < len(l): #迭代
    print(l[count])

 生成器

只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码

def func():
    print('====>first')
    yield 1
    print('====>second')
    yield 2
    print('====>third')
    yield 3
    print('====>end')

g=func()
print(g) #<generator object func at 0x0000000002184360> 

 生成器就是迭代器

g.__iter__
g.__next__
#2、所以生成器就是迭代器,因此可以这么取值
res=next(g)
print(res)

 

 

生成器对象:就是一个迭代器对象

——可以通过_next_()方法取值,得到yield关键字的返回值

 

 


posted @ 2019-06-19 21:18  legend27  阅读(104)  评论(0编辑  收藏  举报