用Python输出一个杨辉三角的例子
作者:junjie 时间:2023-06-04 07:32:33
关于杨辉三角是什么东西,右转 * :杨辉三角
稍微看一下直观一点的图:
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
杨辉三角有以下几个特点:
每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按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,erlang,杨辉三角
0
投稿
猜你喜欢
Python Pygame实战之飞机大战的实现
2023-10-19 17:30:30
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2023-11-24 09:28:09
Pycharm连接远程服务器并实现远程调试的实现
2024-01-03 06:25:05
Vue2.0系列之过滤器的使用
2024-04-10 10:32:24
Python脚本开发中的命令行参数及传参示例详解
2023-01-25 02:44:30
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2023-08-21 15:36:40
Django 如何从request中获取前端数据
2023-06-22 06:52:16
JavaScript 组件之旅(四):测试 JavaScript 组件
2009-10-13 20:32:00
python比较两个列表是否相等的方法
2023-04-10 06:29:18
python队列基本操作和多线程队列
2021-01-02 23:28:46
使用javascript将时间转换成今天,昨天,前天等格式
2024-04-10 10:42:20
jQuerify书签
2008-06-16 12:16:00
详解Oracle修改字段类型方法总结
2024-01-20 22:40:26
Python 一句话生成字母表的方法
2022-03-15 06:49:47
python模块之re正则表达式详解
2021-08-15 03:34:52
关于MySql链接url参数的设置
2024-01-19 17:45:14
在MySQL中使用通配符时应该注意的问题
2024-01-26 13:17:07
一个比较完美的spacer div技巧
2009-03-18 19:29:00
Python把csv数据写入list和字典类型的变量脚本方法
2021-05-27 22:04:20
MySQL怎么给字符串字段加索引
2024-01-25 10:19:57