开发者学堂课程【Python入门 2020年版:生成器的使用介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10429
生成器的使用介绍
简介:利用迭代器,我们可以在每次迭代获取数据(通过 next()方法)时按照特定的规律进行生成。
但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。
为了达到记录当前状态,并配合 next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(generator)。生成器是一类特殊的迭代器。
目录:
一.迭代器回顾
二.生成器的使用
一、迭代器回顾
from collections.abc import Iterable
class Demo(object):
def_init_(self,n):
self.n=n
self.count=0
def__iter__(self):
return self
def__next__(self):
self.count+=1
if self.count<self.n:return'hello'
raise StopIteration
d = Demo(10)
# print(isinstance(d, Iterable))
#x=d._iter_()
#x._next_()
#print(x is d) # True
for i in d:
print(i)
二、生成器的使用
#生成器本质也是一个迭代器,它是一个特殊的迭代器 x=5y =10
#if x > y:
# z=x
# else:
# z=y
z=x if x>y else y
#最简单的生成器 nums = [i for i in range(10)] #列表生成式(推导式
print(nums)
g = (i for i in range(10))
# 得到的结果是生成器 for m ing: #生成器是一个特殊的迭代器,也可以方法在 for...in 后面 print(m)
#迭代器是一个对象,定义 class
#生成器写法上像一个函数def my_ gen(n) :
i=0
if i<n:
return i
while i < n:
# return i # 函数里的 return 表示函数的执行结束
yield i # yield 关键字,将函数变成生成器
print('hello')
G=my_gen(10)
# for i in G:
print(next(iter(G)))
print(next(iter(G)))
print(next(iter(G)))
print(next(iter(G)))
print(next(iter(G)))