zoukankan      html  css  js  c++  java
  • 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
    

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


  • 相关阅读:
    Hello Springboot
    Spring AOP
    代理模式
    Spring 面向注解开发
    Spring Bean 的配置
    IDEA 14 for Mac 提示要安装java 6的修改
    NAS DIY
    Maven Jetty SSL配置
    图书管理系统(jsp+nysql实现)
    互联网+XX项目技术架构
  • 原文地址:https://www.cnblogs.com/busui/p/7215327.html
Copyright © 2011-2022 走看看