def triangles2():
p = [1]
while True:
yield p
p = [1] + [p[n]+p[n+1] for n in range(len(p)-1)] + [1]
n = 0
results = []
for t in triangles2():
print(t)
results.append(t)
n = n + 1
if n == 10:
break
#思路是先打草稿,假设去除头尾两个1,还有n个值
#第一个值是p0+p1,第二个值是p1+p2,...,第n个值是pn-1+pn
#那么0到n-1就是range(n),这里的n怎么定义呢? 我们自然想到用数列的长度去定义
#我们此时手里的这一列数字长度是n+1+1 = n+2
#那么我们若称呼上一列是p,则它的长度,即len(p)是 n+1
#则range(n) = range(len(p)-1)
#我们再想到用列表表达式去简化我们的for循环
#去除首位两个 [1]
#中间那 n 个数据可以表达为 [ pn + pn+1 for n in range(len(p) - 1) ]
#加到一起为: p = [1] + [p[n]+p[n+1] for n in range(len(p)-1)] + [1]
#配合yield p,我们将数列表达式放到它后面,整体再放到while True的下面,run即可
Sign in to make a reply
子皞的十万个失眠夜
def triangles2():
p = [1]
while True:
yield p
p = [1] + [p[n]+p[n+1] for n in range(len(p)-1)] + [1]
n = 0
results = []
for t in triangles2():
print(t)
results.append(t)
n = n + 1
if n == 10:
break
#思路是先打草稿,假设去除头尾两个1,还有n个值
#第一个值是p0+p1,第二个值是p1+p2,...,第n个值是pn-1+pn
#那么0到n-1就是range(n),这里的n怎么定义呢? 我们自然想到用数列的长度去定义
#我们此时手里的这一列数字长度是n+1+1 = n+2
#那么我们若称呼上一列是p,则它的长度,即len(p)是 n+1
#则range(n) = range(len(p)-1)
#我们再想到用列表表达式去简化我们的for循环
#去除首位两个 [1]
#中间那 n 个数据可以表达为 [ pn + pn+1 for n in range(len(p) - 1) ]
#加到一起为: p = [1] + [p[n]+p[n+1] for n in range(len(p)-1)] + [1]
#配合yield p,我们将数列表达式放到它后面,整体再放到while True的下面,run即可