python生成器实现杨辉三角

花了几乎半小时,写出了一个关于计算杨辉三角的函数,然而对答案时,又发现活到老,学到老

没错,triangles()函数是我写的,而triangles1()则是另一位网友写的。
我说一下我写的函数里我踩的坑:
要想复制列表L为R后,L和R各自修改互不影响,就得这样复制R = L[:]。否则:

>>> L = [1,2,3,4,5]
>>> R=L
>>> L.append(6)
>>> L
[1, 2, 3, 4, 5, 6]
>>> R
[1, 2, 3, 4, 5, 6]
>>> R.append(0)
>>> R
[1, 2, 3, 4, 5, 6, 0]
>>> L
[1, 2, 3, 4, 5, 6, 0]

这里是代码:

def triangles():
	n = 3
	yield [1]
	yield [1,1]
	L = [1,1]
	while True:
		R = L[:]
		L = []
		for i in range(n):
			if (i < n-1) and (i > 0):
				L.append(R[i]+R[i-1])
			else:
				L.append(1)
		yield L
		n += 1

def triangles1():
    L=[1]
    yield L
    while True:
        L=[1]+[L[x]+L[x+1] for x in range(len(L)-1)]+[1]
        yield L

n=0
for t in triangles1():
    print(t)
    n = n + 1
    if n == 20:
        break

版权:保留所有解释权。转发请注明出处。


posted @ 2017-07-20 23:13  busui  阅读(476)  评论(0编辑  收藏  举报