用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字符转换
Sep 06 Python
python模拟登陆Tom邮箱示例分享
Jan 13 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
Python 操作文件的基本方法总结
Aug 10 Python
Python之批量创建文件的实例讲解
May 10 Python
在Python中增加和插入元素的示例
Nov 01 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
总结Python连接CS2000的详细步骤
Jun 23 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
php常用文件操作函数汇总
2014/11/22 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
心扬JS分页函数代码
2010/09/10 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python程序运行原理图文解析
2018/02/10 Python
python距离测量的方法
2018/03/06 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
简单了解python中的与或非运算
2019/09/18 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
材料采购员岗位职责
2013/12/17 职场文书
合同协议书格式
2014/04/18 职场文书
法制宣传教育方案
2014/05/09 职场文书
会议欢迎词
2015/01/23 职场文书
教育教学读书笔记
2015/07/02 职场文书
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技