列表生成:

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

最新文章

  1. div非弹出框半透明遮罩实现全屏幕遮盖css实现
  2. MySQL主从复制中断,报“Error on master: message (format)=&#39;Cannot delete or update a parent row: a foreign key constraint fails&#39; error code=1217” 错误
  3. Hibernate总结(一)
  4. Oracle数据库内置函数
  5. Java 中无参带返回值方法的使用
  6. HDU5794 A Simple Chess 容斥+lucas
  7. collection系列用法-defaultdict()
  8. 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D
  9. git 对 Microsoft Word 进行版本控制
  10. 如何登录mysql? cmd怎么连接mysql数据库||从MYSQL客户端登录MYSQL
  11. Android的ViewFlipper-android学习之旅(三十五)
  12. Matlab调用Java类
  13. Goroutine通信与thread in java间的通信
  14. 用Spring Boot去创建web service
  15. c++数据类型漫谈
  16. 068 Oozie任务调度框架
  17. 【Ruby】【高级编程】正则
  18. mysql存储过程中使用游标
  19. 斐波那契数列的5种python实现写法
  20. Matplotlib的初次使用

热门文章

  1. 【Dubbo源码阅读系列】之 Dubbo SPI 机制
  2. C# 自定义特性Attribute
  3. [WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序
  4. filter 图片滤镜的各种设置
  5. Mongo DB命令简介
  6. php 获取当前完整url地址
  7. php实现姓名按首字母排序的类与方法
  8. 树莓3B+_挂载硬盘
  9. 【Keil】Keil5-改变字的大小和颜色
  10. golang基础--method方法