python学习笔记——生成器与杨辉三角

  1. 列表生成器与生成器
    []()的区别。
    python的语法真的是很贴近口语表达了233
    教程网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000
  2. 杨辉三角
    最重要的是理解教程中说的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(‘测试成功’)
    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/mer_chen/article/details/88585320
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞