python实现杨辉三角

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实现杨辉三角相关的知识,希望对你有一定的参考价值。

参考技术A 使用python实现杨辉三角
python教程-生成器

杨辉三角的特点:
1.每行端点与结尾的数为1
2.每个数等于它上方两数之和
3.第n行的数字有n项。
知道这三个特点即可

比如 L = [1,3,3,1]
L.append(0) => [1,3,3,1,0]
range(len(L)) 生成的数组是: [0,1,2,3,4]
使用python列表生成式:
L = [L(n) + L(n-1) for n in [0,1,2,3,4]]
当 n=0 时, n-1=-1 ,这时候取倒数第一个元素 0 ,所以 1+0 = 1
剩下的元素就是 n + (n-1) = 新的元素
最后输出:

Python实现:杨辉三角思路


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

  1. 每个数等于它上方两数之和。
  2. 每行数字左右对称,由1开始逐渐变大。
  3. 第n行的数字有n项。
  4. 第n行数字和为2n-1
  5. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
  6. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
            1
          1   1
        1   2   1
      1   3   3   1
    1   4   6   4   1
  1   5   10  10   5    1    

    我的思路是由于第一行只有一个元素1,所以第二行也一定是1。所以重点在计算后面几行输出的数字,先把它输进列表。

由上图可以知道第三行 列表第一个元素[2 ] 是第2行列表第0个元素和第一个元素的和,因为第0个元素一直是1不用管它,所以有l[a]=l[a]+l[a+1],由上一行输出下一行,现在第三行

是[1,2],然后尾部加上一个[1],就可以得到第三行,列表长度也加了一个,依次类推第四行为[1,3,3],而后再加[1],输出第四行,代码实现如下

1 def yanghui(n):
2     l=[1,1]
3     for x in range(1,n):
4         for a in range(x):
5             l[a]=l[a]+l[a+1]
6         l.insert(0,1)
7     return l

    后面将每一行按照格式输出即可,

再统一打印



1 x=int(input())
2 a=1
3 b=0
4 print((x-a+1)*\' \',[1])
5 while a<x:
6     b=yanghui(a)
7     print((x-a)*\' \',b)
8     a+=1

比起需要用到生成器的算法更好理解,也有些取巧了,可以作为一种思路



以上是关于python实现杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章

一个超强的杨辉三角python实现方法

Python实现:杨辉三角思路

python 实现杨辉三角(依旧遗留问题)

python杨辉三角实现练习

python实现杨辉三角

python实现杨辉三角