Python输出一个杨辉三角
2015-12-20 17:25
766 查看
输出一个杨辉三角
第一个方法:
def triangles():
l = [1]
yield l #输出第一行:只有一个1的list
l = [1,1]
yield l #输出第二行,两个1的list
while True:
l1 = l[1:] #从l的索引1开始取,取后面所有的元素.
for n in range(len(l1)):
l
= l1
+l
#这个地方就是由于l1是从第二个截取了l,所以每次n+1,都是两个相邻位置数字相加。
l = [1]+l #在最前面补上一个1
yield l
换个角度在理解一下:
def triangles():
c = [1]
while True:
yield c
a,b = [0]+c,c+[0]
c =[a[i]+b[i] for i in range(len(a))]
#这个方法显得更易理解;其实就是分别在c的前后各补上0
0,1
1,0 二者相加,变成1,1
0,1,1
1,1,0 二者相加,1,2,1 以此类推。。。
这个就更简单了:每次修改中间的,两头不管。
def triangles():
l = [1]
while True:
yield l
l = [1]+[l[i]+l[i+1] for i in range(len(l)-1)]+[1]
调用:
n = 0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break
第一个方法:
def triangles():
l = [1]
yield l #输出第一行:只有一个1的list
l = [1,1]
yield l #输出第二行,两个1的list
while True:
l1 = l[1:] #从l的索引1开始取,取后面所有的元素.
for n in range(len(l1)):
l
= l1
+l
#这个地方就是由于l1是从第二个截取了l,所以每次n+1,都是两个相邻位置数字相加。
l = [1]+l #在最前面补上一个1
yield l
换个角度在理解一下:
def triangles():
c = [1]
while True:
yield c
a,b = [0]+c,c+[0]
c =[a[i]+b[i] for i in range(len(a))]
#这个方法显得更易理解;其实就是分别在c的前后各补上0
0,1
1,0 二者相加,变成1,1
0,1,1
1,1,0 二者相加,1,2,1 以此类推。。。
这个就更简单了:每次修改中间的,两头不管。
def triangles():
l = [1]
while True:
yield l
l = [1]+[l[i]+l[i+1] for i in range(len(l)-1)]+[1]
调用:
n = 0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break
相关文章推荐
- 安装Python scrapy
- python 数组
- 每天学点Python之数值类型
- 每天学点Python之list
- python sort函数
- (转) Python Generators(生成器)——yield关键字
- python局部变量和全局变量
- python 写文件编码问题
- 窗体版Python批量处理地理数据--栅格裁剪
- python-markdown无法将```生成标签问题解决方法
- python的局部变量和全局变量
- python核心编程-实例的默认参数
- python requests模块和Beautiful Soup模块
- Python中的ftplib模块
- python碰到问题的时候应该如何查找帮助
- python核心编程-继承
- Python2还是Python3
- windows下面安装Python和pip终极教程
- python定时任务调度——apscheduler模块
- 零基础入门学习Python(15):二进制存储 pickle 和异常处理