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']



目录
相关文章
|
6月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
937 19
|
5月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
253 1
|
6月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
349 2
|
7月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
308 0
|
6月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
6月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
328 0
|
7月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
469 0
|
Python
python生成器表达式
python生成器表达式
286 0
|
Python
如何在Python中使用生成器表达式?
如何在Python中使用生成器表达式?
262 5

推荐镜像

更多