Python生成器实现杨辉三角的迭代逻辑详解

方予
方予
发布时间:2026-10-13| 3人浏览过
原创

本文详解利用Python生成器与yield关键字实现杨辉三角输出的核心逻辑。通过迭代方式,结合列表推导式计算相邻元素之和,逐步构建每一行数据。文章深入解析了从第一行[1]开始,如何通过len(L)控制循环范围,动态生成后续如[1,1]、[1,2,1]等行的具体过程,帮助开发者理解生成器在数学序列生成中的应用。

程序运行后需输出如下格式的杨辉三角数据:

[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

......

核心方法:采用迭代机制与生成器技术。

def triangles()

L = [1]

while True:

yiled L

L =[1] + [L[i] + L[I+1] for i in range(len(L)-1)] + [1]

n = 0

for t in triangles():

print(t)

n += 1

if n == 10:

break

具体实现逻辑如下:

1. 由于yield语句会在每次执行时中断并返回当前生成器状态,因此首次输出结果为[1]。

2. 继续执行while循环中yield之后的代码,此时列表L的长度为1。将其代入表达式[L[i] + L[i+1] for i in range(len(L)-1)],由于range(0)为空,该部分生成空值,因此最终yield输出的L为[1, 1]。

3. 此时L的长度变为2,代入表达式得到[L[i] + L[i+1] for i in range(1)]。此时i的取值仅为0,计算过程为[L[0] + L[1]]。根据前一步结果可知L[0]和L[1]的值均为1,因此输出结果为[1, 2, 1]。

4. 依此类推,当L的长度为3时,表达式变为[L[i] + L[i+1] for i in range(2)]。i的取值包括0和1,通过循环计算得到两个值,分别对应[L[0] + L[1]]和[L[1] + L[2]],从而生成下一行数据。

按照上述规律依次迭代,即可生成完整的杨辉三角序列。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。