Python学習ノートのlambda表現の使い方の詳細

2652 ワード

この例では,Python学習ノートのlambda式の使い方について述べる.皆さんの参考にしてください.具体的には以下の通りです.
Lambda式
Lambda式を使用して匿名関数、すなわち名前のない関数を作成します.Lambda式は、コードで以降使用されない関数を迅速に作成するのに適しています.
面倒な書き方:

def multiply(x, y):
  return x * y


Lambdaを使用した後:

double = lambda x, y: x * y


Lambda関数のコンポーネント:
  • キーワードlambdaは、lambda式であることを示す.
  • lambdaの後に匿名関数の1つ以上のパラメータ(英語のカンマで区切られた)があり、その後に英語のコロン:.関数と同様にlambda式のパラメータ名は任意です.
  • の最後の部分は、評価され、その関数で返される式であり、関数に表示されるreturn文に似ています.
  • 注記:この構造に鑑みてlambda式は複雑な関数にはあまり適していないが、短い関数には非常に適している.

  • Lambda式[関連練習]map()は、入力として関数と反復可能オブジェクトを受け入れ、反復可能オブジェクトの各要素に関数を適用する反復器を返す高次内蔵関数です.次のコードはmap()を使用してnumbers内の各リストの平均値を計算し、map()の呼び出しで定義されたlambda式にmean関数を置き換えることで、このコードを書き換え、コードをより簡潔にします.
    
    numbers = [
            [34, 63, 88, 71, 29],
            [90, 78, 51, 27, 45],
            [63, 37, 85, 46, 22],
            [51, 22, 34, 11, 18]
          ]
    def mean(num_list):
      return sum(num_list) / len(num_list)
    averages = list(map(mean, numbers))
    print(averages)
    
    

    Lambdaで書き換えた後:
    
    numbers = [
            [34, 63, 88, 71, 29],
            [90, 78, 51, 27, 45],
            [63, 37, 85, 46, 22],
            [51, 22, 34, 11, 18]
          ]
    averages = list(map(lambda x: sum(x) / len(x), numbers))
    print(averages) # [57.0, 58.2, 50.6, 27.2]
    
    
    filter()は、入力として関数と反復可能オブジェクトを受け入れ、要素に対してTrueを返す反復可能オブジェクト内の特定の要素からなる反復器を返す高次内蔵関数です.次のコードは、filter()を使用してcitiesから10文字未満の名前を取得してリストshort_を作成します.cities.is_をshort関数はfilter()の呼び出しで定義されたlambda式に置き換えられ、このコードを書き換え、コードをより簡潔にします.
    
    cities = ["New York City", "Los Angeles", "Chicago", "Mountain View", "Denver", "Boston"]
    def is_short(name):
      return len(name) < 10
    short_cities = list(filter(is_short, cities))
    print(short_cities)
    
    

    Lambdaで書き換えた後:
    
    cities = ["New York City", "Los Angeles", "Chicago", "Mountain View", "Denver", "Boston"]
    short_cities = list(filter(lambda n: len(n) < 10, cities))
    print(short_cities) # ['Chicago', 'Denver', 'Boston']
    
    

    Pythonの関連内容について興味のある読者は、「Python関数使用テクニック総括」、「Pythonオブジェクト向けプログラム設計入門と進級チュートリアル」、「Pythonデータ構造とアルゴリズムチュートリアル」、「Python文字列操作テクニック要約」、「Python符号化操作テクニック総括」および「Python入門と進級経典チュートリアル」を参照してください.
    ここではPythonプログラムの設計に役立つことを願っています.