用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 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
详解Python中where()函数的用法
Mar 27 Python
Python之文字转图片方法
May 10 Python
python提取包含关键字的整行数据方法
Dec 11 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Python如何使用OS模块调用cmd
Feb 27 Python
python线性插值解析
Jul 05 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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实现给图片加灰色半透明效果的方法
2014/10/20 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
一个实用的php验证码类
2017/07/06 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
化学相关工作求职信
2013/10/02 职场文书
校长先进事迹材料
2014/02/01 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
SpringBoot详解执行过程
2022/07/15 Java/Android