📜  python生成器备忘单下载 - Python(1)

📅  最后修改于: 2023-12-03 15:34:31.127000             🧑  作者: Mango

Python 生成器备忘单下载

作为 Python 程序员,我们经常使用生成器来迭代大数据集或延迟执行计算。这个备忘单提供了基本的生成器示例和用法。

1. 生成器是什么?

生成器是 Python 中的一种特殊函数,它可以在需要时按需生成值或计算结果。每次迭代生成器都会返回一个新的值,直到生成器完成或出错。

生成器与列表非常相似,但它们并不要求在开始时就生成所有的值。这使得它们非常适合处理大型、无限或延迟的数据集。

2. 如何定义生成器?

生成器可以通过函数定义来创建,通过 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。生成器在每次迭代时从上一次离开的地方恢复执行。

3. 生成器表达式

生成器表达式是一种语法简化形式,用来在临时或内联上下文中定义生成器:

numbers = (i for i in range(10))
for n in numbers:
    print(n)

生成器表达式与列表、字典和集合的推导式非常相似,但使用 () 而不是 []、{} 或 set()。

4. 生成器方法

生成器有许多内置方法可以帮助我们操作和处理生成器序列。以下是一些常用的方法:

  • next() - 返回生成器的下一个值。
  • send(value) - 向生成器发送一个值,可以作为 yield 语句的返回值。
  • throw(exception) - 向生成器抛出一个异常。
  • close() - 关闭生成器,并触发一个 StopIteration 异常。
5. 使用生成器处理大文件

生成器可以处理大型数据集和文件,而不会耗尽内存或导致系统崩溃:

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)

这个示例将文件行作为生成器发送,以避免同时将文件全部读入内存。

6. 总结

生成器是 Python 中强大且易用的特性之一。它们是处理大型、无限或延迟的数据集和处理链式操作的绝佳选择。掌握生成器是成为高效 Python 程序员的必要之路。

以上是 Python 生成器的基本用法介绍,希望对你有所启发,也欢迎你在评论区分享你自己的实践。