首页 > 其他分享 >生成器

生成器

时间:2023-06-05 21:56:51浏览次数:32  
标签:return 函数 res 生成器 yield print

生成器

就是节省空间,在函数里出现关键字yield,函数就变成了生成器,就不再执行函数了

想要使用生成器,只需要使用next取值即可

每next取一次值代码走到下一个yield处停止

yield后面如果有很多数据,会以元组的形式输出

def index():

  print('执行')

  yield  123,234,345

res = index()   #激活成生成器

print(res.__next__()) 取出值

 

自定义range

由于for循环内部自带next

 1 def my_range(x, y = None, z = 1 ):
 2     if not y:
 3         x = y
 4         y = 0
 5     while x < y:
 6         yield x
 7         x += z
 8 
 9 
10 res = my_range(2, 7)
11 for i in res:
12     print(i)

 

yield关键字的传参问题

只要函数里有yield,就不再执行而是变成了生成器

 

return和yield的对比

retrun

1.函数遇到return会直接终止运行

2.return也可以返回多个值

yield

1.函数遇到yield代码不会立刻停止运行,而是 ' 停住 '

2.yield也可以返回多个值,以元组的形式返回

3.yield可以把函数变成生成器,而且还支持传参

 

生成器表达式

 

 

 

 

笔试题

选c

 1 def add(n, i):
 2     return n + i
 3 # 调用之前是函数 调用之后是生成器
 4 def test():
 5     for i in range(4):
 6         yield i
 7 g = test()  # 初始化生成器对象
 8 for n in [1, 10]:
 9     g = (add(n, i) for i in g)
10 res = list(g)
11 print(res)
12 
13 #A. res=[10,11,12,13]
14 #B. res=[11,12,13,14]
15 #C. res=[20,21,22,23]
16 #D. res=[21,22,23,24]

 

标签:return,函数,res,生成器,yield,print
From: https://www.cnblogs.com/caicaix/p/17459013.html

相关文章

  • Python生成器深度解析:构建强大的数据处理管道
    前言生成器是Python的一种核心特性,允许我们在请求新元素时再生成这些元素,而不是在开始时就生成所有元素。它在处理大规模数据集、实现节省内存的算法和构建复杂的迭代器模式等多种情况下都有着广泛的应用。在本篇文章中,我们将从理论和实践两方面来探索Python生成器的深度用法。生......
  • Python生成器深度解析:构建强大的数据处理管道
    前言生成器是Python的一种核心特性,允许我们在请求新元素时再生成这些元素,而不是在开始时就生成所有元素。它在处理大规模数据集、实现节省内存的算法和构建复杂的迭代器模式等多种情况下都有着广泛的应用。在本篇文章中,我们将从理论和实践两方面来探索Python生成器的深度用法。......
  • Python之生成器
    生成器''' 生成器就是迭代器的另一种形式,可以理解为生成器就是一种自定义的迭代器 '''所以什么是生成器? 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前......
  • 生成器案例
    生成器案例【一】源码defadd(n,i):returnn+ideftest():foriinrange(4):yieldig=test()fornin[1,10,11]:g=(add(n,i)foriing)res=list(g)print(res)待选项#A.res=[10,11,12,13]#B.res=[11,12,13,14]......
  • day18 生成器
    生成器【一】生成器与yield若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象>>>defmy_range(start,stop,step=1):...print('start...')...whilestart<stop:...yieldstart...start+=step...print......
  • day18 生成器
    生成器【一】生成器与yield若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象>>>defmy_range(start,stop,step=1):...print('start...')...whilestart<stop:...yieldstart...start+=step...print......
  • python中可以节省内存的机制-生成器
    nums=[1,2,3,4,5,6]squares_it=(n**2forninnums)#squares_it得到一个生成器,仅在调用时动态生成nums的平方squares_lst=[n**2forninnums]#squares_lst一次性计算所有元素并生成一个列表并保存下来所以,当您这样做时:fornins......
  • hibernate中自定义主键生成器
    自定义hibernate主键生成机制[url]http://walle1027.iteye.com/blog/1114824[/url]org.hibernate.id.MultipleHiLoPerTableGenerator主键生成器[url]http://suzefeng8806.iteye.com/blog/923511[/url][url]http://zhongrf.iteye.com/blog/972303[/url]......
  • 等差数列生成器
      1classArithmeticProgression:23def__init__(self,begin,step,end=None):4self.begin=begin5self.end=end6self.step=step789def__iter__(self):10result=typ......
  • 发言稿生成器app推荐,这几个生成发言稿的软件要知道!​
    发言稿生成器app推荐,发言稿生成器app是一款能够帮助用户快速生成演讲或发言稿的手机应用程序,用户可以在应用程序中输入主题或关键词,然后应用程序会自动生成一份基础的演讲稿或发言稿,那么很多小伙伴日常会使用到,下面感兴趣的小伙伴一起来看看小编的推荐吧!选择:FunAIFUNAI是一款基......