• 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
    

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


  • 相关阅读:
    第四次作业
    随机点名
    表单验证
    冒泡排序&&选择排序
    Equals相等
    String类
    最终类final
    Eclipse的设置
    Equals相等(测试)
    猜数字
  • 原文地址:https://www.cnblogs.com/busui/p/7215327.html
Copyright © 2020-2023  润新知