找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 6336|回复: 3

[代码与实例] 使用python实现杨辉三角

4

主题

11

帖子

31

积分

贫民

积分
31
pythoner 发表于 2016-7-27 16:08:33 | 显示全部楼层 |阅读模式
使用python编写了一个小算法, 实现杨辉三角
上代码:
  1. # -*- coding = utf-8 -*-

  2. def triangles():
  3.     L = [1]
  4.     while True:
  5.         yield L
  6.         L.append(0)
  7.         L = [L[i - 1] + L[i] for i in range(len(L))]

  8. n = 0
  9. for t in triangles():
  10.     print(t)
  11.     n += 1
  12.     if n == 10:
  13.         break
复制代码


回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-7-27 17:10:38 | 显示全部楼层
{:8_215:}
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
sduerpang 发表于 2016-8-1 19:02:59 | 显示全部楼层
{:8_203:}
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
synbe 发表于 2021-5-8 22:02:19 | 显示全部楼层
Python
较为便捷,代码量较少的实现方式如下:
      
# -*- coding: utf-8 -*-
#!/usr/bin/env python
def triangles():
    L = [1]
    while True:
        yield L
        L = [sum(i) for i in zip([0]+L, L+[0])]
该方式用到了列表生成式,理解起来较困难,下面是另一种方式:
   
def triangles():
    ret = [1]
    while True:
        yield ret
        for i in range(1, len(ret)):
            ret = pre + pre[i - 1]
        ret.append(1)
        pre = ret[:]
另一个不用生成器的版本:
def YangHui (num = 10):
    LL = [[1]]
    for i in range(1,num):
        LL.append([(0 if j== 0 else LL[i-1][j-1])+ (0 if j ==len(LL[i-1]) else LL[i-1][j]) for j in range(i+1)])
    return LL
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表