pythonfor杨辉三角_python 杨辉三角

是我写的普通不用生成器版本:

l=[]

for i in range(10):

l.append([])

for j in range(i+1):

l[i].append(0) #用0占位置,我之前没有占位置时候,初始化为l=[[],[]]会显示index out of range.不知道为何,我是初学者。

if j==0 or j==i:

l[i][j]=1 #两端为1

else:

l[i][j]=l[i-1][j-1]+l[i-1][j] #中间数为上两数之和

print "%4d"%l[i][j], #输出

print

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

我后来百度了一下,用生成器的也有几个版本,前面格式都一样。获取下一列的方式不一样。版本一:

def triangles():

L = [1]

while True:

yield L

L.append(0)

L = [L[i - 1] + L[i] for i in range(len(L))]#用前一个list 生成后一个list每一个元素。第一个元素等于 l[-1] +l[1] (0+-1)

版本二:

def triangles():  L = [1]

while True:

yield L

L=[sum(i) for i in zip([0]+L,L+[0])]#创造两个list 错位+

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值