📅  最后修改于: 2023-12-03 15:34:31.127000             🧑  作者: Mango
作为 Python 程序员,我们经常使用生成器来迭代大数据集或延迟执行计算。这个备忘单提供了基本的生成器示例和用法。
生成器是 Python 中的一种特殊函数,它可以在需要时按需生成值或计算结果。每次迭代生成器都会返回一个新的值,直到生成器完成或出错。
生成器与列表非常相似,但它们并不要求在开始时就生成所有的值。这使得它们非常适合处理大型、无限或延迟的数据集。
生成器可以通过函数定义来创建,通过 yield 语句产生新值:
def my_generator():
yield 1
yield 2
yield 3
g = my_generator()
print(next(g)) # output: 1
print(next(g)) # output: 2
print(next(g)) # output: 3
yield 语句可以返回任意类型的值,包括 None。生成器在每次迭代时从上一次离开的地方恢复执行。
生成器表达式是一种语法简化形式,用来在临时或内联上下文中定义生成器:
numbers = (i for i in range(10))
for n in numbers:
print(n)
生成器表达式与列表、字典和集合的推导式非常相似,但使用 () 而不是 []、{} 或 set()。
生成器有许多内置方法可以帮助我们操作和处理生成器序列。以下是一些常用的方法:
next()
- 返回生成器的下一个值。send(value)
- 向生成器发送一个值,可以作为 yield 语句的返回值。throw(exception)
- 向生成器抛出一个异常。close()
- 关闭生成器,并触发一个 StopIteration 异常。生成器可以处理大型数据集和文件,而不会耗尽内存或导致系统崩溃:
def process_file(file_name):
with open(file_name, 'r') as f:
for line in f:
yield line.strip()
for line in process_file('my_file.txt'):
print(line)
这个示例将文件行作为生成器发送,以避免同时将文件全部读入内存。
生成器是 Python 中强大且易用的特性之一。它们是处理大型、无限或延迟的数据集和处理链式操作的绝佳选择。掌握生成器是成为高效 Python 程序员的必要之路。
以上是 Python 生成器的基本用法介绍,希望对你有所启发,也欢迎你在评论区分享你自己的实践。