列表生成:

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'

杨辉三角定义如下:

          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('测试失败!')

【Python入门学习】列表生成和函数生成器的方式实现杨辉三角的更多相关文章

  1. python实现杨辉三角

    刚刚学python,原来用c++,Java很轻松实现的杨辉三角,现在用python实现,代码是少了,理解起来却不容易啊. 这里主要用到的Python的生成器. 我们都知道Python有列表解析功能,根 ...

  2. 杨辉三角(生成器generator)

    生成器:(Python中,这种一边循环一边计算的机制,称为生成器:generator) 创建generator的方法: 1.把列表生成式的[]变为(),就创建了一个generator 例: 可以通过n ...

  3. python入门学习:3.操作列表

    python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表   循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...

  4. python入门学习:7.函数

    python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数   使用关键字def ...

  5. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  6. 廖雪峰老师博客学习《通过生成器generator生成列表式杨辉三角》

    说明:这是我接触生成器概念后,自己对它的理解,可能比较表面,没深入理解,也可能有错误.后续校正错误认知,将有关generator作为一个tag了! 希望以后能活用. 先贴出自己写的triangles( ...

  7. python入门学习:5.字典

    python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典   在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...

  8. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  9. python入门学习:6.用户输入和while循环

    python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...

随机推荐

  1. 国产开源JavaWeb应用程序框架——XWAF(1)

    XWAF是一个基于java反射和Servlet 技术的国产开源Web应用程序框架.其英文全称为“eXtensible Web Application Framework”,意即“可扩展的网络应用程序框 ...

  2. Linux-- 目录基本操作(2)

    cp 复制文件或目录 用法:cp [OPTION] SOURCE源文件 DIRECTORY目标文件,具体可以查看 man cp 以常用的参数举例 [root@hs-192-168-33-206 tom ...

  3. oracle数据库的配置文件

    url=jdbc:oracle:thin:@localhost:1521:orcldriver=oracle.jdbc.OracleDriverusrname=GJQ   (PLSQL Develop ...

  4. ionic3 监听软键盘的高度

    ionic1 和普通cordova的大家都知道 就是看ionic3 和4 https://blog.csdn.net/sean_css/article/details/70243893 ionic c ...

  5. 关于DP

    关于DP 似乎摸到了门槛呢,学着学着Dijkstra突然有了感觉. 我们遍历的时候会遍历整张图的每个点每条边,然后与已知的对比大小,如果比现在方案好,就放入数组 那么,DP岂不是同样的思想? 在背包问 ...

  6. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  7. Redis 之持久化

    目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知 ...

  8. [笔记] 升級到 Delphi 10.2 Tokyo 笔记

    升級到 Delphi 10.2 Tokyo 笔记: 更新 Xcode 8.3 & iOS 10.3 测试: macOS 没问题(可 Debug) iOS Simulator 没问题(可 Deb ...

  9. 运行TensorFlow报错,“This program requires version 3.6.1 of the Protocol Buffer runtime library, but the installed version is 3.0.0.”

    报错信息: [libprotobuf FATAL google/protobuf/src/google/protobuf/stubs/common.cc:67] This program requir ...

  10. PHP 审计

    1.get  和post  上传数组,数组的sha1值相等 通过阅读代码,我们发现要想得到flag就要达到下面三个条件: 使 uname的sha1值 与 passwd的sha1的值 相等    但是同 ...