用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正则表达式的使用范例详解
Aug 08 Python
python修改注册表终止360进程实例
Oct 13 Python
Python数据类型详解(四)字典:dict
May 12 Python
python中安装模块包版本冲突问题的解决
May 02 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
手动安装python3.6的操作过程详解
Jan 13 Python
Django静态资源部署404问题解决方案
May 11 Python
python中封包建立过程实例
Feb 18 Python
PyQt5爬取12306车票信息程序的实现
May 14 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
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
JS常用表单验证方法总结
2014/05/22 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
团委书记的竞聘演讲稿
2014/04/24 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
男性健康日的活动方案
2014/08/18 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
搞笑婚前保证书
2015/02/28 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书