这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下

关于杨辉三角是什么东西,右转维基百科:杨辉三角

稍微看一下直观一点的图:

代码如下:

杨辉三角有以下几个特点:

每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按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输出一个杨辉三角的例子相关推荐

  1. python中函数是一段子程序_用Python来写一个男女相亲小程序|码农的情人节

    功能: 你输入你的性别,年龄,生日,我程序就给匹配一下你喜欢的类型,下面我们具体来讲讲怎么用Python写 第一部分:用户输入部分 1.获取用户的输入:我们用raw_input() args =raw ...

  2. 在python中函数不可以嵌套调用_在Python中调用嵌套函数

    我有一个方法,我已经分解成更小的嵌套函数来分解代码基:def foo(x,y): def do_this(x,y): pass def do_that(x,y): pass do_this(x,y) ...

  3. python中导入模块使用哪个关键字_关于python导入模块的关键字介绍

    关于python导入模块的关键字介绍 发布时间:2020-04-17 10:13:26 来源:亿速云 阅读:101 作者:小新 今天小编给大家分享的是关于python导入模块的关键字介绍,很多人都不太 ...

  4. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

  5. python中的append()有什么功能_在python中append()函数能做什么

    python中的append()方法用于在列表末尾添加新的对象. append()方法语法:list.append(obj) 参数 obj -- 添加到列表末尾的对象. 返回值:该方法无返回值,但是会 ...

  6. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型

    原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...

  7. python中print()的作用是什么_在python中最常见的:print的真正用法

    一.print()函数概述 print() 方法用于打印输出,是python中最常见的一个函数. 该函数的语法如下: print(*objects, sep=' ', end='\n', file=s ...

  8. python中的打印是什么意思_对python:print打印时加u的含义详解

    对python:print打印时加u的含义详解 u:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都 ...

  9. python中对象和变量的关系_浅析python中的类变量和对象变量

    刚学python,学到了有关于类和对象的地方.对一个概念有点模糊,后来通过实践编码找到一定规律 在python中 class test(object): id=2 name='tt' list=['t ...

  10. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

最新文章

  1. windows 8 突然不能上网 LSP 二种修复方法
  2. 基于Mac自带nginx、php,配置php服务器
  3. 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”
  4. 《数据库SQL实战》查找最晚入职员工的所有信息
  5. my task is always searched based on employee responsible
  6. 李宁-2015年7月13日-个人文档
  7. Git笔记(10) 别名
  8. Vue框架引入JS库的正确姿势
  9. redis 命令别名_redis 命令、命令行根据前缀(通配符)批量删除redis存储的key
  10. 关于数据分析的4点心得:维度、指标、KPI
  11. AD20如何自定义BOM模板?Altium Designer20 实用技巧系列教程(五)
  12. xp计算机用户名和密码忘记了怎么办,XP系统开机密码忘记了怎么办?
  13. 考勤系统(打卡时间计算)
  14. 利用Python实现词云舞蹈视频
  15. Mac系统如何显示隐藏文件
  16. 电脑管家卸载后留下的一个叫 电脑管家-安全注册 的进程,无法关闭。展开的服务是 qmbsrv
  17. L298N电机驱动的使用
  18. 如何在计算机中增加硬盘分区,win10系统电脑下增加新磁盘分区的操作方法
  19. fullcalendar的使用教程
  20. c语言wifi热点源码,C#Win7设置WiFi热点源码

热门文章

  1. XP中预防U盘自动运行病毒的方法!
  2. 从设计网络就开始知识蒸馏
  3. 使用python 打造中国的电影光魔
  4. [译] 2019 年的 9 大设计趋势
  5. 【BZOJ】4873: [Shoi2017]寿司餐厅
  6. 利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
  7. 【双11背后的技术】集团AliDocker化双11总结
  8. git和其他版本控制系统的区别
  9. 《软件设计精要与模式》第二版源代码
  10. 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...