python之生成器函数

  • 包含yield语句的函数可以用来创建生成器对象,这样的函数也称生成器函数。

  • yield语句与return语句的作用相似,都是用来从函数中返回值。与return语句不同的是,
    return语句一旦执行会立刻结束函数的运行,而每次执行到yield语句并返回一个值之
    后会暂停或挂起后面代码的执行,下次通过生成器对象的__next__()方法、内置函数
    next()、for循环遍历生成器对象元素或其他方式显式“索要”数据时恢复执行。

  • 生成器具有惰性求值的特点,适合大数据处理。

实例:

f = lambda x,y:x+y
print(f(1,2))
f = lambda x,y,z=5:x+y+z
print(f(1,2))
print(f(1,2,z=3))
print("关键参数和默认参数使用",f(y=1,x=2,z=3))
print("lambda 可以加函数")
def demo(x):return x*xlist_a =[i**2 for i in range(5)]
print(list(map(lambda x: demo(x), list_a)))
print("用于排序")
data = [1, 81,16, 0,  256]
data.sort(key=lambda x:len(str(x)))
print(data)
data.sort(key=lambda x:len(str(x)),reverse=True)
print(data)
# 3
# 8
# 6
# 关键参数和默认参数使用 6
# lambda 可以加函数
# [0, 1, 16, 81, 256]
# 用于排序
# [1, 0, 81, 16, 256]
# [256, 81, 16, 1, 0]#斐波那契数列
def f():a, b = 1, 1         #序列解包,同时为多个元素赋值while True:yield a         #暂停执行,需要时再产生一个新元素a, b = b, a+b   #序列解包,继续生成新元素
a = f()                 #创建生成器对象
for i in range(10):     #斐波那契数列中前10个元素print(a.__next__(), end=' ')
print()
for i in range(10):print(next(a), end=' ')
print()
a= f()
for i in range(10):     #斐波那契数列中前10个元素print(next(a), end=' ')
from collections import defaultdict
def yanghui(n):#所有元素默认值0triangle = defaultdict(int)print(triangle)for row in range(n):#每行第一个元素为1triangle[row,0] = 1print(triangle[row,0], end=' ')#生成该行后续元素for col in range(1, row+1):#如果指定位置的元素不存在,默认为0triangle[row,col] = triangle[row-1,col-1] + triangle[row-1,col]print(triangle[row,col],end=' ')print()
print()
yanghui(5)
# 1 1 2 3 5 8 13 21 34 55
# defaultdict(<class 'int'>, {})
# 1
# 1 1
# 1 2 1
# 1 3 3 1
# 1 4 6 4 1

python之生成器函数相关推荐

  1. Python的生成器函数

    1. 生成器的概念 生成器是Python中的一个对象,对这个对象进行操作,可以依次生产出按生成器内部运算产生的数据.但是要注意,如果不对生成器进行操作,是不会产生数据的.称这样的方式为惰性求值,延或者 ...

  2. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  3. python生成器函数_Python 编写生成器函数

    Python 编写生成器函数,可以将许多函数简洁地写成生成器表达式的形式,比如之前讲过的映射和过滤.另外,也可以用Python内置的高阶函数(例如map()或者filter())或者生成器函数实现这些 ...

  4. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  5. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  6. python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式

    1.生成器 生成器的本质是迭代器. 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 #函数 deffunc():prin ...

  7. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数

    一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...

  8. python中的函数、生成器的工作原理

    1.python中函数的工作原理 def foo():bar()def bar():pass python的解释器,也就是python.exe(c编写)会用PyEval_EvalFramEx(c函数) ...

  9. 如何用python生成软件_python中的生成器函数是如何工作的?

    1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...

  10. 《Python Cookbook 3rd》笔记(4.6):带有外部状态的生成器函数

    带有外部状态的生成器函数 问题 你想定义一个生成器函数,但是它会调用某个你想暴露给用户使用的外部状态值. 解法 如果你想让你的生成器暴露外部状态给用户,别忘了你可以简单的将它实现为一个类,然后把生成器 ...

最新文章

  1. 【转载】WinCE OAL架构分析
  2. 17个Python的骚操作,你都OK吗?
  3. android从放弃到精通 第12天 勿忘初心
  4. Google Colab使用详细教程
  5. cordova开发插件,并在android studio中开发、调试
  6. C语言函数指针 和 OC-Block
  7. 加仓减仓口诀_做短线必备口诀
  8. MySQL--3--mysqldump备份策略
  9. grunt + compass
  10. 4号线地铁站点列表_7/4号线大连路地铁站:合租主卧家具齐全~
  11. python显示中文乱码_解决python中文乱码的方法
  12. Electron常见问题 30 - 深度填坑之阴影问题
  13. 学计算机笔记本屏幕多大,笔记本屏幕尺寸有哪些 2分钟让你全整明白【详解】...
  14. 药学要学python吗_大一医学生有无必要学Python?
  15. MATLAB 中contour的应用
  16. VUE3.X——获取dom元素
  17. 电脑硬盘速度明显变慢的原因
  18. 计算机英语性考任务答案,国家开放大学(中央电大)本科《理工英语4》网上形考任务试题及答案...
  19. ios android 换手机通讯录备份,用iPhone如何备份/恢复通讯录?
  20. 台风康妮超级计算机,台风康妮最新消息 2013年第15号台风康妮实时路径图

热门文章

  1. 高中英语语法(003)-句子的要素及种类
  2. Alexander Tropsha:AI从零自学设计新型药物分子,研究登Science子刊|42问AI与机器人未来...
  3. 因为计算机中丢失MSVCp,无法启动此程序,因为计算机中丢失MSVCP140.dll的
  4. 《UNIX环境高级编程》笔记 第十章-信号
  5. 寒霜朋克计算机丢失,寒霜朋克无法进入游戏解决方法 寒霜朋克无法进入游戏怎么办...
  6. 小牛叔讲Python第6章:for循环-能计数的循环1234567
  7. Linux history命令
  8. 百度统计和谷歌统计文档
  9. 通过计算机主机数来划分子网,计算机网络知识梳理(2)——子网掩码及网络划分...
  10. 解决IE兼容性试图模式下,jQuery.min.js的“JSON”未定义