Python DAY 6-2を練習する

15899 ワード

関数#カンスウ#
1.lambda(匿名関数)は関数を構築します.前は関数のパラメータです.後ろは戻り式です.
  • lambdaを使用すると、関数を定義するプロセスを節約し、コードをより簡潔にすることができます.
  • lambdaを使用するには、関数に名前を付ける問題を考慮する必要はありません.
  • 簡略化コードの可読性
  • >>> g=lambda x:2*x+1
    >>> g(5)
    11
    >>> g=lambda x,y:x+y
    >>> g(5,4)
    9
    

    2.filterフィルタ関心のある情報をフィルタしてtrueの部分をフィルタする
    >>> filter (None,[1,0,True,False])
    <filter object at 0x000001B96FA8D128>
    >>> list(filter (None,[1,0,True,False]))
    [1, True]
    
    >>> def o(x):
    	return x%2
    
    >>> temp=range(10)
    >>> show=filter (o,temp)
    >>> list(show )
    [1, 3, 5, 7, 9]
    

    Lambda式を使用する場合は、
    >>> list(filter(lambda x:x%2,range(10)))
    [1, 3, 5, 7, 9]
    

    3.mapマッピング
    >>> list (map(lambda x:x*2,range(10)))
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    

    4.再帰:関数がそれ自体を呼び出し、深さを設定する必要がある
    def digui(n):
        if n==1:
            return 1
        else:
            return n*digui(n-1)
    
    
    number =int (input('        :'))
    result=digui(number)
    print('%d     :%d'%(number,result))5
    5120
    

    5.フィボナッチ数列:
    def fab(n):
        if n<1:
            print ('    !')
            return -1
    
        if n==1 or n==2:
            return 1
        else:
            return fab(n-1)+fab(n-2)
    
    result = fab(20)
    if result !=-1:
        print ('   %d      !'% result)
    

    6.ハノータゲーム(再帰アルゴリズム)
    def han(n,x,y,z):
        if n==1:
            print (x,'-->',z)
        else:
            han(n-1,x,z,y)#   n-1    x   y 
            print (x,'-->',z)#            x   z 
            han(n-1,y,x,z)# y  n-1      z 
    
    
    n=int (input ('         :'))
    han(n,'X','Y','Z')
    
    
    4
    X --> Y
    X --> Z
    Y --> Z
    X --> Y
    Z --> X
    Z --> Y
    X --> Y
    X --> Z
    Y --> Z
    Y --> X
    Z --> X
    Y --> Z
    X --> Y
    X --> Z
    Y --> Z