python —— 迭代器与生成器

先看思维导图,更好的学习迭代器与生成器

迭代器                                                         

可迭代对象                                                                                                  

可迭代协议:含有__iter__方法的对象。     

可迭代的一定可以被for循环

比如:列表、元组、字典、字符串、集合等

迭代器                                                                                                         

迭代器协议:含有__iter__和__next__方法的对象。 迭代器一定是可迭代对象,可迭代对象可以通过调用__iter__方法就能得到一个迭代器。

特点:1、 节省内存空间        2、很方便使用,且所有数据只取1次

t = (1,2,3,4,5)
t1 = t.__iter__()
print(t1)    # 生成一个迭代器
for i in t1:
    print(i)
可迭代对象通过调用__iter__生成迭代器

 

生成器                                                     

生成器本质:生成器本质就是迭代器

生成器的表现形式:                                                                             

1、生成器函数: 含有yield的关键字的函数就是生成器函数

  特点:调用函数后,函数不执行,但返回一个生成器。 每次调用__next__方法进行取值

def func(x,y):
    s = x+y
    yield s
    print('*****')
    yield 'admin'
    print('#####')

ret = func(3,4)
ret.__next__()    #7
next(ret)            #*****    admin
生成器函数

2、生成器表达方式:

 定义:把列表解释式[]换成() 得到的就是生成器表达式

特点:列表解释式和生成器表达式都是便利的编程方式,只是生成器表达式节省内存

#筛选出1~10之间的偶数
ret = (i for i in range(1,11) if i%2==0)
print(ret)    #生成器
for i in ret:
    print(i,end=' ')
生成器表达方式

 

 

 

posted @ 2019-06-04 12:09  自在呼吸  阅读(105)  评论(0)    收藏  举报