首页 > 其他 > 详细

生成器输出杨辉三角列表

时间:2020-02-10 21:42:11      阅读:79      评论:0      收藏:0      [点我收藏+]

2020-02-10 18:54:06

杨辉三角定义如下:

          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     i=1
 3     list1=[1]
 4     yield list1
 5     i=2
 6     list2=[1,1]
 7     yield list2
 8     list1=list2
 9     while i<=10:
10         i+=1
11         list2=[0 for i in range(0,i)]
12         list2[0]=1
13         list2[-1]=1
14         for j in range(1,i-1):
15             list2[j]=list1[j-1]+list1[j]
16         list1=list2
17         yield list2
18     

 

测试代码

 1 # 期待输出:
 2 # [1]
 3 # [1, 1]
 4 # [1, 2, 1]
 5 # [1, 3, 3, 1]
 6 # [1, 4, 6, 4, 1]
 7 # [1, 5, 10, 10, 5, 1]
 8 # [1, 6, 15, 20, 15, 6, 1]
 9 # [1, 7, 21, 35, 35, 21, 7, 1]
10 # [1, 8, 28, 56, 70, 56, 28, 8, 1]
11 # [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
12 n = 0
13 results = []
14 for t in triangles():
15     results.append(t)
16     n = n + 1
17     if n == 10:
18         break
19 
20 for t in results:
21     print(t)
22 
23 if results == [
24     [1],
25     [1, 1],
26     [1, 2, 1],
27     [1, 3, 3, 1],
28     [1, 4, 6, 4, 1],
29     [1, 5, 10, 10, 5, 1],
30     [1, 6, 15, 20, 15, 6, 1],
31     [1, 7, 21, 35, 35, 21, 7, 1],
32     [1, 8, 28, 56, 70, 56, 28, 8, 1],
33     [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
34 ]:
35     print(测试通过!)
36 else:
37     print(测试失败!)

 

生成器输出杨辉三角列表

原文:https://www.cnblogs.com/lzycodinglife/p/12292154.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!