python输入的n打印n行杨辉三角_Python当中关于杨辉三角的列表实现

让我们来实现吧。在实现的过程中想套用一层循环发现难以实现,用两层试试看。

yh=[[1],[1,1]]

for i in range(2,6):

line=[1]

ls=yh[i-1]

for j in range(len(ls)-1):

line.append(ls[j]+ls[j+1])

line.append(1)

yh.append(line)

print(yh)

#打印n行的杨辉三角

a=int(input(‘请输入第几行‘))

y=[[1],[1,1]]

for i in range(a-2):

n=y[i+1]

long=len(n)

line=[1]

for j in range(long-1):

line.append(n[j]+n[j+1])

line.append(1)

y.append(line)

print(line)

关于补零的一些想法,在杨辉三角当中,可以将左右两边当成多了一个零,在进入下一行的时候就可以看成0+1=1,同理右边也是一样,在实际写代码中,开始确实是左边多一个[0]

,右边多一个[0],但实际操作下来,左边的[0]可以省去,因为在python当中是有独特的负索引机制,在右边的最后一项可以看做是[-1]项,这样从0开始迭代的话可以从i-1开始

迭代,是一个python的独特思想。

y=[[1]]

for i in range(1,6):

n=y[i-1]+[0]

l=[]

for j in range (i+1):

l.append(n[j-1]+n[j])

y.append(l)

print(y)

如果用独特的负索引的话,用对称性也是可以做出来的也是从-1项开始做起一直做到中间,这就需要在一开始的时候就创建一个刚刚好的列表空间,然后将元素一个一个填充进去

,这种方法就叫做对称法

y=[[1]]

for i in range(5):

n=y[i]+[0]

line=[1]*(i+2)

for j in range((i+2)//2+1):

line[j]=n[j-1]+n[j]

line[-j-1]=line[j]

y.append(line)

print(y)

其实有这个想法之后实现代码并不困难,其实这种方法只是一种思想,这更多是为最后一种方法铺路,前面三种方法可以看出都是引用一个新列表然后将新列表填充到旧列表当中,如果将旧列表直接copy一个新列表这样可以省去许多冗余量,我们称这第四种方法为单列覆盖法。

y=[1]*6

for i in range(6):

long=6-i

tmp=1

for j in range (1,i//2+1):

val=y[j]+tmp

tmp=y[j]

y[j]=val

y[-long-1]=val

print(y[:i+1])

在这里引用了一个中间变量tmp因为如果不引用的话会造成数据覆盖,会有人在实际操作中会判断是奇数列还是偶数列,但是我们在实验中可以看到其实判断是多余的,因为完全可以在多余列覆盖即可。

到现在杨辉三角就差不多完成了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值