用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爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
django文档学习之applications使用详解
Jan 29 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Python中turtle库的使用实例
Sep 09 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
Python常用数字处理基本操作汇总
Sep 10 Python
python实现自动化群控的步骤
Apr 11 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
如何开始收听短波广播
2021/03/01 无线电
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
json数据格式常见操作示例
2019/06/13 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python+微信接口实现运维报警
2016/08/27 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
收银员的岗位职责范本
2014/02/04 职场文书
静心口服夜广告词
2014/03/20 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
1000字打架检讨书
2014/11/03 职场文书
学校隐患排查制度
2015/08/05 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers
MYSQL 运算符总结
2021/11/11 MySQL
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript