- 列表生成器与生成器
[]与()的区别。
python的语法真的是很贴近口语表达了233
教程网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000 - 杨辉三角
最重要的是理解教程中说的yield的用法,即生成器generator与一般函数返回时的区别。
在敲代码的过程中遇到的问题是不知道要如何用python语言恰当的表达杨辉三角的规律。最后发现list可以简单用[]+[]+...+[]来表示orz,那问题就很简单了。
测试时常用print()还是蛮有效的。
根据题目意思,定义函数triangle()来生成杨辉三角的一行,通过list的迭代显示结果。当然也可以直接定义triangle(n),直接完成相应输出,但是就失去生成器的意义了,即边运行边生成,节省内存的占用。
最后附上代码:
def triangles():
tri = [1]
yield tri
tri = [1, 1]
yield tri
i = 2
while True:
tri = [1] + [tri[i] + tri[i + 1] for i in range(len(tri) - 1)] + [1]
yield tri
n = 0
results = []
for t in triangles():
print(t)
results.append(t)
n = n + 1
if n == 10:
break
if results !=[
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1],
[1, 7, 21, 35, 35, 21, 7, 1],
[1, 8, 28, 56, 70, 56, 28, 8, 1],
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
print(‘测试失败’)
else:
print(‘测试成功’)
python学习笔记——生成器与杨辉三角
最新推荐文章于 2022-06-04 10:06:33 发布
本文探讨Python中列表生成器与生成器的区别,重点解析生成器(generator)的yield用法,通过实现杨辉三角来展示其边运行边生成的特点,有效节省内存。
2693

被折叠的 条评论
为什么被折叠?



