今天学习了廖雪峰老师的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后面加1L = [L[i - 1] + L[i] for i in range(len(L))]       

然后我分析了一下他的运行机制,嗯原来我第一种想法是如此靠近答案....但是真的差距好大....后面的备注是我自己的简单想法,如有不足,请指正...我是菜鸟一枚,欢迎大神指导

后面附几种其他的表达式类型,仅供参考:
def triangles():result = [1]while True:yield resultl = 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 = 0results = []for t in triangles():print(t)results.append(t)n = n + 1if n == 10:break

以上几种方式都可以运行,大家可以自己选择方法理解吸收,话说,大神真的非常多!
高潮来啦,还是分开讲,range(len(N))=[0,1],
so, N = [N[i-1]+N[i] for i in [0,1]]
so, N = [N[0-1]+N[0] , N[1-1]+N[1]]
so, N = [0+1 , 1+0] = [1,1]
这样,杨辉三角的第二行就出来啦!



2017年11月23日学习笔记_用python解决杨辉三角函数,以及理解相关推荐

  1. 2017年12月6日 学习笔记(JAVA面试题)

    前段时间都在泡图书馆,看<java核心技术卷1>.感觉好多东西会用了,但是并不知道底层实现原理,还有好多没见过的知识点概念.觉得果然还是要多读书. 接下来准备边读书,边把各种面试题提及的知 ...

  2. 2016年11月23日学习总结

    2016.11.23学习总结 System类 Runtime类 String类 StringBuffer类 StringBuilder类 Date类 DateFormat类和SimpleDateFor ...

  3. 2010年11月23日学习内容总结

    1. 程序的扩展性和鲁棒性.良好的扩展性和鲁棒性是写程序追求的一个目标,要达到这个目标要在写出代码之后,对代码不断的进行重构才能达到这个目的.在重构的过程中遵循一定的规则.扩展性指的是在需求发生变化时 ...

  4. Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

    06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie &q ...

  5. 11月24日学习笔记_map/reduct的应用于使用

    首先我们先了解几个命令的含义: print(str.upper()) # 把所有字符中的小写字母转换成大写字母 # print(str.lower()) # 把所有字符中的大写字母转换成小写字母 # ...

  6. The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorf

    The Wide and Deep Learning Model(译文+Tensorlfow源码解析) 原创 2017年11月03日 22:14:47 标签: 深度学习 / 谷歌 / tensorfl ...

  7. 2021年11月23日对自己的一次鼓励

    2021年11月23日 author:陈镇坤27 创建时间:2021年11月23日15:23:31 ------------------------------ 学习犹如逆水行舟,不进则退 从今年7月 ...

  8. 始于2015年11月23日,终于2018年08月08日

    留念. 2015年11月23日:在一起 2016年01月17日-21日:北京机场,我们❤ 2016年04月16日:去他所在城市--成都 2016年06月04-06日:第一次小旅游--都江堰.青城山 2 ...

  9. 西湖大学鞠峰:环境微生物宏基因组学(报告视频+PPT,11月23日)

    报告题目:环境微生物宏基因组学 报告人:鞠峰研究员 报告时间:2020年11月23日 鞠峰,西湖大学研究员,中国工程院院刊<Engineering>编委.Frontiers系列期刊编委与审 ...

最新文章

  1. SAP MM PO中的Delivery Date并非保存在EKPO表里
  2. 重走丝绸之路:海尔如何探索全球生活智慧?
  3. C# Aes CryptoStream Specified padding mode is not valid for this algorithm的解決方法
  4. 带有Spring和Maven教程的JAX–WS
  5. ubuntu boot中grub误操作 导致系统开进grub
  6. SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
  7. linux终端打开浏览器_终端可以放电影,一行代码就能实现
  8. java treemap value排序_Java TreeMap升序|降序排列和按照value进行排序的案例
  9. 【深度学习】有效防止过拟合
  10. C++类静态成员变量作用域共享问题
  11. 利用微软AntiXss Library过滤输出字符,防止XSS攻击
  12. nyoj1189 yougth和他的朋友们(滚动数组运用)
  13. MAC下Charles的破解版
  14. cka教程_区块链入门教程solidity函数详解
  15. input隐藏边框和选中样式
  16. 彻底理解js的作用域链
  17. JavaScript排他思想
  18. 计算机绘制表格教案,《表格的制作》教学设计
  19. 从质量低到高带你了解影片名里面的TC、HD等的含义
  20. 计算机网络的社会环境分析_计算机网络的功能和应用

热门文章

  1. 百度2016年软件测试开发工程师面经
  2. 计算机机房搬迁复杂吗,盘点机房搬迁中最容易出现的五个问题
  3. Java关于面向对象
  4. 修改jupyter notebook的默认主页(默认工作空间)
  5. 如果你想自己设计 PCB 电路板,那么这些条件你一定要具备
  6. 利用计算机技术执行去自动化,自动化技术_计算机技术_
  7. Comparable的用法
  8. php 实心圆,Android利用drawable-xml自定义实心圆和空心圆
  9. 【English】 详解 祈使句的用法
  10. 大华监控资料搜集记录