• 【Python入门学习】列表生成和函数生成器的方式实现杨辉三角


    列表生成:

    L = [i for i in range(10)]

    列表生成器:

    g = (i for i in range(10))

    函数生成器使用的关键字yield实现

    例如fib生成器

      1 def fib(max):
      2     n, a, b = 0, 0, 1
      3     while n < max:
      4 	#print(b)
      5         yield b
      6         a, b = b, a + b
      7         n = n + 1
      8     return 'done'
    View Code

    杨辉三角定义如下:

              1
             / 
            1   1
           /  / 
          1   2   1
         /  /  / 
        1   3   3   1
       /  /  /  / 
      1   4   6   4   1
     /  /  /  /  / 
    1   5   10  10  5   1
    把每一行看做一个list,试写一个generator,不断输出下一行的list:
      1 def triangles():
      2     n = 0
      3     L1 = [1]
      4     L2 = [1, 1]
      5     L = []
      6     while True:
      7         n += 1
      8         if n == 1:
      9             L = L1
     10         elif n == 2:
     11             L = L2
     12         yield L
     13         L = [L[i] + L[i+1] for i in range(len(L) - 1)]
     14         L.insert(0, 1)
     15         L.append(1)
     16 
     17 n = 0
     18 results = []
     19 for t in triangles():
     20     print(t)
     21     results.append(t)
     22     n = n + 1
     23     if n == 10:
     24         break
     25 
     26 if results == [
     27     [1],
     28     [1, 1],
     29     [1, 2, 1],
     30     [1, 3, 3, 1],
     31     [1, 4, 6, 4, 1],
     32     [1, 5, 10, 10, 5, 1],
     33     [1, 6, 15, 20, 15, 6, 1],
     34     [1, 7, 21, 35, 35, 21, 7, 1],
     35     [1, 8, 28, 56, 70, 56, 28, 8, 1],
     36     [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
     37 ]:
     38     print('测试通过!')
     39 else:
     40     print('测试失败!')
    View Code
  • 相关阅读:
    Handsontable添加超链接
    Handsontable 筛选事件
    handsontable自定义渲染
    M1 Mac安装 Homebrew
    Pypi官网怎么找历史依赖包
    在 CentOS7 中我们在安装 MySQL
    Ansible使用yum安装
    Ansible集群自动化运维操作
    java对list中map集合中某个字段排序
    使用hive的orcfiledump命令查看orc文件
  • 原文地址:https://www.cnblogs.com/yongqiangyue/p/8880374.html
Copyright © 2020-2023  润新知