用generator生成杨辉三角【廖雪峰】

Mark一下,加深理解

#-*- coding:utf-8 -*-
def triangles():
	L=[1]
	while True:
		yield L
		L=[1]+[L[i]+L[i+1] for i in range(len(L)-1)]+[1]
n=0
for t in triangles():
	print(t)
	n=n+1
	if n==10:
		break

其中比较难理解的就是

L=[1]+[L[i]+L[i+1] for i in range(len(L)-1)]+[1]

1.首先明确Python中两个list是可以相加的,这里的L 就是多个list相加出来的结果,其次range(0)为空,不会print任何东西,当len[1]=1时,L=[1]+[]+[1]

for i in range(0):
	print(i)
  1. [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1],
    [1, 4, 6, 4, 1],
    [1, 5, 10, 10, 5, 1],
    [1, 6, 15, 20, 15, 6, 1],
    [1, 7, 21, 35, 35, 21, 7, 1],
    [1, 8, 28, 56, 70, 56, 28, 8, 1],
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
    不能看出每一行的首尾都是 [1] ,所以我们只要找出第三行的 [2] ,第四行的 [3,3] ,第五行的 [4,6,4]…的规律就可以,[2]=L[0]+L[1]#等于上一行(第二行)中的第0个元素+第一个元素,[3,3]=L[0]+L[1]+L[1]+L[2]#等于第三行的第0个元素+第1个元素在加上第1个元素+第2个元素,所以使用for循环迭代一下就OK了
    最后感谢博主先天零魂力,他说的很好,附一下链接Python中杨辉三角的理解(廖雪峰教程例)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值