Python实现杨辉三角的几种形式

4 篇文章 0 订阅
4 篇文章 0 订阅

境界一、这个非常直接和苍白,值得注意的是对象之间的引用与复制,要确定是否只是引用的改变或者是否在内存堆中创建实体的副本。L = t 就是引用的拷贝,而L = t.copy()是内容级别的较深的拷贝。

def yanghui(max):
    t = [1]
    n = 1
    while n<max:
        print(t)
        if n>0:
            L = t.copy()
            for i in range(1,len(t)):
                L[i] = t[i]+t[i-1]
            L.append(1)
        t = L
        n= n+1
    return 'done'

境界二、这里面使用到了yield,将这个函数表达成为了一个生成器。

def yanghuiG(max):
    t = [1]
    n = 1
    while n<max:
        yield t
        if n>0:
            L = t.copy()
            for i in range(1,len(t)):
                L[i] = t[i]+t[i-1]
            L.append(1)
        t = L
        n = n + 1
    return 'done'

境界三、当t = [1]时,for i in range(len(t) - 1)]实际上是for i in range(0), 这时i是一个空list,就不会返回i,会自动跳出第一次循环,直接执行下一行语句

def yanghuiG3(max):
    t = [1]
    n= 0
    while n<max:
        yield t
        t = [t[i] + t[i+1] for i in range(len(t)-1)]
        t.insert(0, 1)
        t.append(1)
        n = n + 1
    return 'done'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值