Python高级用法:生成器(generator)

生成器(generator)

生成器是一种返回生成序列的方法,与直接使用列表等方式返回序列的方式不同的是,他的生成可以是无限的。

生成器可以与next搭配使用,可以被看作是一种特殊的迭代器。

yield语句

yield一般与循环相配合使用,我们以斐波那契数列为例构建生成器

注:斐波那契数列是一个特殊的增数列,后一个数是前两个数之和,斐波那契数列如下:1,1,2,3,5, 8,...

python 复制代码
def fibonacci():
	a, b = 0, 1
	while True:
		yield b
		a, b = b, a + b

在代码中展示了一个在死循环中生成斐波那契数列的功能,使用yield进行返回。使用next可以获取下一个斐波那契数列的数字。

组合使用生成器

不同的生成器可以组合使用,但这种用法一般要求数列有限。

下面我们创建一个计算平方的函数和一个值+1的函数

python 复制代码
def power(values):
	for value in values:
		yield value ** 2
python 复制代码
def add(values):
	for value in values:
		yield value + 1

下面我们使用前面介绍过的列表推导生成方式生成一个由数字组成的序列

python 复制代码
values = [i for i in range(5)]

生成器单个使用效果如下:

合并使用效果如下

这样的结果就是先+1再平方

相关推荐
谢亮_vipxieliang6 小时前
Go gRPC基础与实战
开发语言·后端·golang
Aurorar0rua7 小时前
CS50 x 2024 Notes Data structures - 08
c语言·开发语言·学习方法
高级程序源7 小时前
springboot荆州旅游推介平台24175-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·django·课程设计
企业数字化笔记7 小时前
新租户注册成功却不能用?开通状态、初始化恢复与可用性验收
开发语言·python
Guarding and trust7 小时前
项目拆解(二):模型输出是‘野‘的——三层兜底+重分析,把AI变成可靠零件
java·人工智能·python·大模型·fastapi·ollama·错误兜底
瑶山7 小时前
Windows + WSL2 Ubuntu + VS Code配置C++开发环境
开发语言·c++·windows·vscode·wsl
用户298698530147 小时前
Python 实战:将 HTML 内容保存为图像文件
后端·python·html
for_ever_love__7 小时前
LangChain MultiVectorRetriever:一个文档存多个向量
人工智能·python·自然语言处理·langchain·ai大模型·多向量·摘要检索
迅猛龙办公室7 小时前
Python实现获取星期字符串
java·前端·python
Vertira7 小时前
C# 函数封装成 DLL,
开发语言·c#