用Python输出一个杨辉三角的例子


Posted in Python onJune 13, 2014

关于杨辉三角是什么东西,右转维基百科:杨辉三角

稍微看一下直观一点的图:

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

杨辉三角有以下几个特点:

每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按0计算。
第N层项数总比N-1层多1个

计算第N层的杨辉三角,必须知道N-1层的数字,然后将相邻2项的数字相加,就能得到下一层除了最边上2个1的所有数字。 听起来有点像递归的思想,我们不妨假设我们已经知道N-1层的数字,来计算一下N层的数字吧。

def _yanghui_trangle(n, result):
    if n == 1:
        return [1]
    else:
        return [sum(i) for i in zip([0] + result, result + [0])]

上面代码中,result表示N-1层杨辉三角的数字。实习上,我们在列表2端各补了一个0,然后计算相邻项的和,就可以直接得到结果。

稍微完善一下代码:

def yanghui_trangle(n):
    def _yanghui_trangle(n, result):
        if n == 1:
            return [1]
        else:
            return [sum(i) for i in zip([0] + result, result + [0])]
    pre_result = []
    for i in xrange(n):
        pre_result = _yanghui_trangle(i + 1, pre_result)
        yield pre_result
if __name__ == "__main__":
    for line in yanghui_trangle1(5):
        print line

_yanghui_trangle可以用lambda的方式简写,但是可读性感觉会变差,所以还是保持现状好了。

tips: 上面的程序并没有考虑数据格式化的问题,也就是说输出不是完美的三角形。

鉴于最近在学习erlang,补上一个erlang版本的,性能上没有测试过,不过还是要惊叹于函数式语言的表达能力:

-module(yanghui).
-author(lfyzjck).
-export([triangle/1]).
triangle_next(P) ->
    lists:zipwith(fun(X, Y) -> X+Y end, [0|P], P ++ [0]).
triangle(1) ->
    [[1]];
triangle(N) ->
    L = triangle(N - 1),
    [H|_] = L,
    [triangle_next(H)|L].
Python 相关文章推荐
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
Python中模块string.py详解
Mar 12 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
python opencv实现运动检测
Jul 10 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
python中@property的作用和getter setter的解释
Dec 22 Python
python基础之//、/与%的区别详解
Jun 10 Python
Python 的 with 语句详解
Jun 13 #Python
python学习笔记:字典的使用示例详解
Jun 13 #Python
Python urlopen()函数 示例分享
Jun 12 #Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 #Python
Python struct模块解析
Jun 12 #Python
深度剖析使用python抓取网页正文的源码
Jun 11 #Python
python k-近邻算法实例分享
Jun 11 #Python
You might like
图书管理程序(三)
2006/10/09 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
Python输出指定字符串的方法
2020/02/06 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
护士自我鉴定范文
2013/10/06 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python