2017年11月23日学习笔记_用python解决杨辉三角函数,以及理解
来源:互联网 发布:怎么开通淘宝子账号 编辑:程序博客网 时间:2024/06/01 16:41
今天学习了廖雪峰老师的python教程,学到杨辉三角函数的时候很迷茫,
他的基本格式如下:
[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
因为觉得无从下手,思考了一下感觉就是需要上层和下层数据相加,但是错位相加,我也没接触过类似的方法,所以就先放弃了这种方法,
后来我又考虑到一个方法,就是将每一层当做一个数组,进行累积循环,这就需要借助yeild的记忆功能,所以,我就考虑了一方法是类似1+l[n-1]+l+1的方法,考虑了半天毫无头绪,所以就看了下答案....我的天我真心觉得自己只是不扎实不牢固...先上一个我最喜欢的方法:
def triangles(n):#定义一个函数,并定义一个参数n,现在讲n看做是需要的杨辉三角的层数 L = [1]#定义一个列表L,并将其定义为是一个[1]的列表 while len(L) < n:#采用循环的方式,如果len(L)也就是层数,小于给定的层数,那么就可以继续循环 yield L#重点来了!记住此位置,下次循环直接从此开始!yeild是如此神奇 L.append(0)#现在生成一个新的列表, 就是在列表L后面加1 L = [L[i - 1] + L[i] for i in range(len(L))]
然后我分析了一下他的运行机制,嗯原来我第一种想法是如此靠近答案....但是真的差距好大....后面的备注是我自己的简单想法,如有不足,请指正...我是菜鸟一枚,欢迎大神指导后面附几种其他的表达式类型,仅供参考:
def triangles(): result = [1] while True: yield result l = list(result) l.append(0) result=[l[i]+l[i-1] for i in range(len(l))] return 'done'
二
def triangles(): # 列表生成式# L = [1]# while True:# yield L# L.append(0)# L = [L[i - 1] + L[i] for i in range(len(L))]三/
def triangles(): # for 循环# ret = [1]# while True:# yield ret# for i in range(1, len(ret)):# ret[i] = pre[i] + pre[i - 1]# ret.append(1)# pre = ret[:]
四def triangles(num=10): # 不用生成器 LL = [[1]] for i in range(1, num): LL.append( [(0 if j == 0 else LL[i - 1][j - 1]) + (0 if j == len(LL[i - 1]) else LL[i - 1][j]) for j in range(i + 1)]) return LLif __name__ == '__main__': n = 0 results = [] for t in triangles(): print(t) results.append(t) n = n + 1 if n == 10: break
以上几种方式都可以运行,大家可以自己选择方法理解吸收,话说,大神真的非常多!
阅读全文
0 0
- 2017年11月23日学习笔记_用python解决杨辉三角函数,以及理解
- Python学习笔记2017年12月23日
- 2017年11月28日笔记_随笔
- Python学习笔记2017年12月22日
- Python学习笔记2017年12月24日
- Python学习笔记2017年12月25日
- 前端学习笔记 2017年9月11日
- bat学习笔记-2017年11月18日
- 2017年7月2日 学习1基本知识理解
- 2017年10月11日笔记
- 11月27日学习笔记_匿名函数/装饰器
- 2017年11月23日训练笔记
- 11月23日笔记
- 2013年1月23日VC++学习笔记
- Java学习笔记(2013年03月23日)
- PHP&MySQL学习笔记2017年1月18日
- 2017年1月21日学习笔记 Spring是什么?
- 2017年5月4日C++学习笔记
- 传进一个时间段,按整小时切割成一个个小时段及稍作变化
- linux命令之添加系统搜索动态库目录-ldconfig
- 新信用体系来了?马云的支付宝梦即将实现!
- 交叉熵
- ThinkPHP支付宝支付
- 2017年11月23日学习笔记_用python解决杨辉三角函数,以及理解
- windows 操作系统安装、激活
- UTF-8 Validation问题及解法
- 计算图(computational graph)角度看BP(back propagation)算法
- OpenCV安装:Win10 + OpenCv 3.1.0 + VS2015 及环境配置
- 实现二叉树的各种基本运算的算法
- 第六章第四题 结构体和选择结构的应用
- iOS基础:设置App icon图标及修改应用程序名
- Java中return的含义