博客
关于我
【从零学习python 】60.探索生成器:迭代的灵活利器
阅读量:585 次
发布时间:2019-03-11

本文共 1367 字,大约阅读时间需要 4 分钟。

生成器

1. 生成器概述

在编程中,生成器是一种非常有用的工具。它允许我们在迭代过程中按需生成数据,而无需一次性生成所有数据。这对于处理大数据量或需要延迟处理的任务尤为重要。生成器在Python中通过生成器表达式(generator expressions)或函数返回生成器对象来实现。

2. 创建生成器的方法

创建生成器有两种主要方式:

L = [x * 2 for x in range(5)]

G = (x * 2 for x in range(5))

这里,L 是一个列表,而 G 是一个生成器。生成器可以通过多种方式使用,如 next() 函数、for 循环或 list() 方法。

next(G) # 输出 0

next(G) # 输出 2 next(G) # 输出 4 next(G) # 输出 6 next(G) # 输出 8

G = (x * 2 for x in range(5))

for x in G: print(x)

输出结果为:02468

3. 使用生成器函数

生成器函数是通过函数定义返回一个生成器对象的。例如,下面的函数 gen() 会返回一个生成器对象:

def gen():
i = 0
while i < 5:
temp = yield i
print(temp)
i += 1
f = gen()

next(f) # 输出 0 f.send('haha') # 输出 haha next(f) # 输出 None f.send('haha') # 输出 haha

f = gen()

f.next() # 输出 0 f.next() # 输出 None f.next() # 输出 None f.next() # 输出 None f.next() # 抛出 StopIteration 异常

4. 进阶案例

以下是一个更复杂的生成器示例,展示了生成器在处理斐波那契数列中的应用:

def fib(n):
current = 0
num1, num2 = 0, 1
while current < n:
yield num1
num1, num2 = num2, num1 + num2
current += 1
return 'done'
f = fib(5)

for num in f: print(num)

输出:0 1 1 2 3

转载地址:http://vtavz.baihongyu.com/

你可能感兴趣的文章
Python函数运行的可执行文件的终端输出如何以一般方式静音?
查看>>
Python+Pytest+Allure+Git+Jenkins接口自动化框架
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
Python+pytest接口自动化 —— 接口测试基础
查看>>
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
查看>>
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
查看>>
python+pytest接口自动化:接口测试
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>
Python+Selenium之数据驱动测试的实现
查看>>