Python 教程之控制流(17)生成器表达式

简介: Python 教程之控制流(17)生成器表达式

Python中,要创建迭代器,我们可以同时使用常规函数和生成器。生成器的编写方式与普通函数类似,但我们使用 yield() 而不是 return() 来返回结果。它作为实现迭代器的工具更强大。它易于实现且更方便,因为它提供了按需元素的评估。与常规函数不同,常规函数在遇到返回语句时完全终止,生成器使用 yield 语句,其中函数的状态从上次调用中保存,并且可以在下次调用生成器函数时拾取或恢复。与列表相比,生成器的另一个巨大优势是它需要更少的内存。

除此之外,另外两个函数 next() 和 iter() 使生成器函数更加紧凑可靠。例:

# 用于说明 generator, yield() and next()的Python 程序
def generator():
  t = 1
  print ('First result is ',t)
  yield t
  t += 1
  print ('Second result is ',t)
  yield t
  t += 1
  print('Third result is ',t)
  yield t
call = generator()
next(call)
next(call)
next(call)

输出:

First result is  1
Second result is  2
Third result is  3

发生器函数和正常函数之间的区别 –

  • 函数生成后,该函数将暂停,控制权将转移给调用方。
  • 当函数终止时,将在进一步的调用中自动引发停止站点。
  • 局部变量及其状态在连续调用之间被记住。
  • 生成器函数包含一个或多个 yield 语句,而不是返回语句。
  • 由于像 next() 和 iter() 这样的方法是自动实现的,我们可以使用 next() 循环访问这些项。

还有各种其他表达式可以简单地编码,类似于列表理解,但我们使用括号而不是括号。这些表达式设计用于封闭函数立即使用生成器的情况。生成器表达式允许创建没有 yield 关键字的生成器。但是,它不会共享使用良率函数创建的发电机的全部功率。例:

# 用于说明生成器表达式的 Python 代码
generator = (num ** 2 for num in range(10))
for num in generator:
  print(num)

输出:

0
1
4
9
16
25
36
49
64
81

我们还可以使用生成器表达式生成一个列表:

string = 'geek'
li = list(string[i] for i in range(len(string)-1, -1, -1))
print(li)

输出:

['k', 'e', 'e', 'g']



目录
相关文章
|
4天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
15天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
152 12
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
82 8
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
54 4
|
4月前
|
数据可视化 IDE 开发工具
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
447 13
|
4月前
|
监控 数据可视化 搜索推荐
【Python篇】matplotlib超详细教程-由入门到精通(下篇)2
【Python篇】matplotlib超详细教程-由入门到精通(下篇)
62 8
|
4月前
|
数据可视化 API 数据处理
【Python篇】matplotlib超详细教程-由入门到精通(上篇)
【Python篇】matplotlib超详细教程-由入门到精通(上篇)
217 5
|
4月前
|
编解码 数据可视化 IDE
【Python篇】matplotlib超详细教程-由入门到精通(下篇)1
【Python篇】matplotlib超详细教程-由入门到精通(下篇)
52 3
|
4月前
|
数据可视化 IDE Linux
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
577 2
|
4月前
|
数据可视化 数据处理 数据库
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
277 2

热门文章

最新文章