文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言
- 最近学python,写了足足1个小时才写对,再去看大佬的写法直接来个降维打击,我是不是不适合敲代码?
- 一、问题?
- 二、自己写的通俗(垃圾)代码
- 大神写的,5行就完事
- 总结
前言 最近学python,写了足足1个小时才写对,再去看大佬的写法直接来个降维打击,我是不是不适合敲代码?
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题?杨辉三角定义如下:
1
/
1 1
/ /
1 2 1
/ / /
1 3 3 1
/ / / /
1 4 6 4 1
/ / / / /
1 5 10 10 5 1
把每一行看做一个list,试写一个generator,不断输出下一行的list
#杨辉三角 杨辉三角 杨辉三角
def triangles():
L = [1]
n = 0 #从第0行开始算
yield L #第0行加进去
while n < 10: #输出前10行元素
n = n + 1 #第1行(注意我是从第0行开始算)
S = [] #临时变量,进行新一行的存储
for i in range(n + 1): #这里一定注意不能是range(n),例如此时n = 1,那么就是range(1),只生成0,会造成接下来的下标越界
if(i == 0 or i == n):
S.insert(i, 1) #首尾两元素为1
else:
S.insert(i, L[i - 1] + L[i]) #注意下标,第一次写成了L[i] + L[i+1],造成了越界
L = S
yield L #一轮结束,中断
return 'done'
大神写的,5行就完事
#杨辉三角 杨辉三角 杨辉三角
def triangles():
L = [1]
while True:
yield L
L = [1] + [L[i] + L[i+1] for i in range(len(L) - 1)] + [1]
总结
我是fw,我是fw,我是fw



