生成器的使用介绍 | 学习笔记

简介: 快速学习 生成器的使用介绍

开发者学堂课程【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=5
y =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)))

相关文章
|
2月前
|
大数据 Python
Python编程中的迭代器与生成器
【2月更文挑战第7天】在Python编程中,迭代器和生成器是两个重要的概念,它们提供了一种高效的方法来处理数据集合。本文将深入探讨迭代器和生成器的定义、用法以及在实际项目中的应用,帮助读者更好地理解和运用这两个功能强大的工具。
|
2月前
|
Python
|
安全 Python
一日一技:一个生成器如何当两个用?
一日一技:一个生成器如何当两个用?
70 0
|
前端开发
前端学习案例7-迭代器和生成器7
前端学习案例7-迭代器和生成器7
61 0
前端学习案例7-迭代器和生成器7
|
前端开发
前端学习案例1-迭代器和生成器1
前端学习案例1-迭代器和生成器1
76 0
前端学习案例1-迭代器和生成器1
|
前端开发
前端学习案例6-迭代器和生成器6
前端学习案例6-迭代器和生成器6
55 0
前端学习案例6-迭代器和生成器6
|
前端开发
前端学习案例7-生成器和迭代器2
前端学习案例7-生成器和迭代器2
33 0
前端学习案例7-生成器和迭代器2
|
前端开发
前端学习案例1-迭代器-生成器1
前端学习案例1-迭代器-生成器1
43 0
前端学习案例1-迭代器-生成器1
|
前端开发
前端学习案例6-生成器和迭代器1
前端学习案例6-生成器和迭代器1
52 0
前端学习案例6-生成器和迭代器1
|
设计模式 缓存
TinyId生成器
TinyId生成器 的nextId、getNextSegmentId,一个是获取segmentId,一个是获取nextId。也即生成的过程中,首先会生成一批数据的maxId和delta、reminder等信息,然后获取nextId。而这个过程中,首先需要有idGenerator对象。目前可以看到其多次使用double check,基于单例模式。同时基于缓存,使用了抽象工厂模式,获取idGenerator的时候。
254 0
TinyId生成器