美文网首页
关于python生成杨辉三角的巧妙解决方案

关于python生成杨辉三角的巧妙解决方案

作者: Closears | 来源:发表于2015-06-13 01:44 被阅读9610次

先上代码:

# (代码作者的id:风袭6729) 
def triangles():
    a = [1]
    while True:
        yield a
        a = [sum(i) for i in zip([0] + a, a + [0])]

解释:

通过观察杨辉三角可知,下一行的每一个元素都依次由本行中每两个相邻元素之和得到,这个方法可以用一个技巧实现,即:将本行list拷贝出两个副本,将两个副本错1位,然后加在一起。由于错位后,前后各多了一个元素,所以要在错位后的两个list的前后各加一个[0]来补齐(其实,这个0是理所当然的,是杨辉三角的一部分)。

如图1.1,同一行中前后相邻两个元素相加(这是杨辉三角的构成规则),就相当于两个本行元素错位相加。而zip方法,就是从这两行中分别取出第i个位置的元素组成元组(这也是添“0”的原因)。sum()函数正好求出它们的和,进而求出了下一行。然后又yield函数把这一行“塞入”generator--也就是本例中的triangles()。

图1.1

以下为输出部分的代码:

n = 0
for t in triangles():
    print(t)
    n = n + 1
    if n == 10:
        break

相关文章

  • 关于python生成杨辉三角的巧妙解决方案

    先上代码: 解释: 通过观察杨辉三角可知,下一行的每一个元素都依次由本行中每两个相邻元素之和得到,这个方法可以用一...

  • python实现杨辉三角

    使用python实现杨辉三角python教程-生成器 杨辉三角的特点:1.每行端点与结尾的数为12.每个数等于它上...

  • python输出杨辉三角

    杨辉三角定义 今天学习到的一个python代码实现非常简洁网址如下:python 生成器对于像我这样python初...

  • 118. 杨辉三角

    【Description】给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,...

  • [Python]生成器-杨辉三角的生成

    调用结果为:

  • Swift - LeetCode - 杨辉三角

    题目 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 说明:在「杨辉三角」中,每个数...

  • 杨辉三角

    题目 难度级别:简单 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个...

  • 118.杨辉三角

    题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 示例: 思路 杨辉三角有以下规...

  • LeetCode 118.杨辉三角

    题目描述 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它...

  • LeetCode 118. 杨辉三角

    题目 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上...

网友评论

      本文标题:关于python生成杨辉三角的巧妙解决方案

      本文链接:https://www.haomeiwen.com/subject/pbijqttx.html