[プログラミングベース]Python lambda関数まとめ


Python lambda関数チュートリアルでは、Pythonで匿名関数を作成する方法を示しています.Pythonの匿名関数はlambdaキーワードを使用して作成されます.
文書ディレクトリ
  • 1紹介
  • 1.1単純使用
  • 1.2 Python lambdaとmap
  • 1.3 Python lambdaとfilter
  • 1.4 Python lambdaとsort
  • 2参照
  • 1紹介
    Python lambda関数は匿名関数とも呼ばれ、名前のないインライン関数です.これらはlambdaキーワードで作成されます.これはPythonを内蔵した関数モデルの一部です.Python lambda関数は1つの式に限られています.通常の機能を使用できる場所で使用できます.
    Python lambdaには、次の構文があります.
    z = lambda x: x * y
    

    文はlambdaキーワードを使用して匿名関数を作成します.の双曲線コサインを返します.xはlambda関数に渡されるパラメータです.パラメータxの後ろには、コロン文字が付いています.コロンの右側のコードはlambda関数を呼び出すときに実行される式です.Lambda関数はz変数に割り当てられる.
    1.1簡単な使用
    次の例では、2つの関数が1つの値に対して平方を求めます.
    def square(x):
        
        return x * x
    
    #      lambda           。   ,       。sqr_fun      lambda        
    sqr_fun = lambda x: x * x
    
    print(square(3))
    
    print(sqr_fun(4))
    
    9
    16
    

    Lambda関数は、次のように入力しなくてもよい.
    def constant():
        return 1
    
    # lambda         
    constant_fun = lambda: 1 
    
    print(constant())
    print(constant_fun())
    
    1
    1
    

    Lambda関数は、パラメータを複数入力することもできます.例は次のとおりです.
    def product(x, y):
        
        return x * y
    
    #           
    product_fun = lambda x,y : x * y
    
    print(product(3,4))
    
    print(product_fun(4,3))
    
    12
    12
    

    1.2 Python lambdaとmap
    Python lambda関数はmap()関数に役立ちます.より簡潔なコードを作成できます.Python map()は、与えられた関数を反復iterableの各項目に適用し、反復iteratorオブジェクトを返す内蔵関数です.Python 2 map関数はリストを返し、Python 3 map関数は反復器を返します.
    def square(x):
        return x * x
    
    #            
    result=map(square,[1,2,3,4,5])
    
    print(result)
    
    #        
    for i in result:
        print(i)
    
    
    1
    4
    9
    16
    25
    

    Python lambda関数はmap()関数に役立ちます.より簡潔なコードを作成できます.Python map()は、指定した関数をiterableの各アイテムに適用し、反復オブジェクトを返す内蔵関数です.次の例では、map()にパラメータとしてインライン関数を作成します.map()関数を使用して、lambda関数をリストの各要素に適用します.
    nums = [1, 2, 3, 4, 5, 6]
    
    nums_squared = map(lambda x: x * x, nums)
    
    for num in nums_squared:
        print(num)
    
    1
    4
    9
    16
    25
    36
    

    もちろんlambada関数はmap()関数と組み合わせて2つのパラメータを入力できます.次の例では、2つのリストを提供し、2つのリストの同じ位置のデータを加算します.
    num_add = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    
    for num in num_add:
        print(num)
    
    3
    7
    11
    15
    19
    

    1.3 Python lambdaとfilter
    Python lambda関数はfilter()関数とともに使用できます.関数の役割は、iterableからtrueを返す要素からリストを構築することです.
    file()関数はpython固有の関数で、主に設定条件に合致しない要素をフィルタリングし、条件に合致する要素からなる反復器iterableを返すために使用されます.この関数には2つの入力パラメータがあり、1つ目のパラメータは処理関数で、2つ目のパラメータは処理するシーケンスです.シーケンスの各要素はパラメータとして関数を判断し、TrueまたはFalseを返し、Falseを返すパラメータにフィルタリングし、Trueを返す要素を反復器に配置します.
    次の例では、filter()を使用して奇数をフィルタリングする例を示します.
    def is_even(x):
        return x % 2 == 0
    
    result = filter(is_even, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(result)
    
    for i in result:
        print(i)
    
    
    2
    4
    6
    8
    10
    

    次の例では、lambda関数とfilter関数を組み合わせて整数リストをフィルタします.新しいリストには奇数の整数のみが含まれます.filter()の最初の関数は、リスト要素を処理する関数、すなわちlambda関数です.
    nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    
    nums_filtered = list(filter(lambda x: x % 2, nums))
    
    print(nums_filtered)
    
    [1, 3, 5, 7, 9, 11]
    

    1.4 Python lambdaとsort
    Pythonリストには、内蔵のリストソート()がリストをその場で変更する方法があります.このメソッドには、比較する前に各リスト要素で呼び出す関数を指定するキーパラメータがあります.ここではlambda関数を使用できます.次の例では、lambda関数を使用して、ユーザーの生年月日に従って逆の順序でソートすることを示します.
    users = [
      {'name': 'John Doe', 'date_of_birth': 1987},
      {'name': 'Jane Doe', 'date_of_birth': 1996},
      {'name': 'Robert Brown', 'date_of_birth': 1977},
      {'name': 'Lucia Smith', 'date_of_birth': 2002},
      {'name': 'Patrick Dempsey', 'date_of_birth': 1994}
    ]
    
    #      date_of_birth    
    def takeBirth(elem):
        return elem['date_of_birth']
    
    #       
    users.sort(key=takeBirth)
    for user in users:
        print(user)
    
    print('-'*50)
    
    # list.sort() reverse        ,key                
    users.sort(reverse=True, key=lambda e: e['date_of_birth']) 
    
    for user in users:
        print(user)
    
    {'name': 'Robert Brown', 'date_of_birth': 1977}
    {'name': 'John Doe', 'date_of_birth': 1987}
    {'name': 'Patrick Dempsey', 'date_of_birth': 1994}
    {'name': 'Jane Doe', 'date_of_birth': 1996}
    {'name': 'Lucia Smith', 'date_of_birth': 2002}
    --------------------------------------------------
    {'name': 'Lucia Smith', 'date_of_birth': 2002}
    {'name': 'Jane Doe', 'date_of_birth': 1996}
    {'name': 'Patrick Dempsey', 'date_of_birth': 1994}
    {'name': 'John Doe', 'date_of_birth': 1987}
    {'name': 'Robert Brown', 'date_of_birth': 1977}
    

    2参考
    http://zetcode.com/python/lambda/
    https://www.runoob.com/python/python-built-in-functions.html