2-2. 必須構文(配列に関連する関数)


配列を処理する際に有用な関数である順序付きシーケンス型データを学習する.
配列はあらゆる分野で使用されるデータ形式であり、それを熟知すると役立ちます.
  • TMI)ReduceとMapは勉強中に一度整理したことがありますが、少しは分かっていますが、LambdaとFilterはまだ気まずいようです.早く慣れなきゃ
  • Sequence type function

  • 本日のキーワード
  • lambda, reduce, map, filter
  • lambda


    匿名関数、hip領域で使用するとすぐに消える関数.

    長所

  • 使い捨て関数でメモリを節約できます.
  • pythonicでコードを記述できます.
  • Pythonごみ収集器countは0と見なされる.
    GCは,不要な変数や参照を整理してメモリを管理するプロセスである.
  • 一般関数との比較

  • 一般関数:再使用のためにメモリに格納します.
  • ラムダ関数:内部呼び出しのたびに1つの反復器オブジェクトが返されるのでメモリの無駄が少ない.
  • #세 수의 합을 더하는 함수를 만들 때 
    #한번 사용할거라면 익명함수 lambda 만들어주기
    
    
    cul = lambda a,b,c : a+b+c
    print('ex 1 >',cul(1, 2, 3))

    map


    リスト内のすべての要素を演算処理し、結果を返します.
  • それぞれ関数のパラメータとして適用した後、その結果を文字形式で入力する.
  • nextでオブジェクトの次の要素をフィルタできます.
  • map関数は2つの因子を受け入れる.map(함수, 시퀀스)
  • 結果はサードパーティに戻るので、list()を使用して変換する必要があります.
  • digits1 = [ x * 10 for x in range(1,11)]
    # 리스트에 1~10를 넣어준다.
    
    # (함수, 시퀀스)
    result = map(lambda i: i**2, digits1)
    
    # map object로 출력이 된다.
    print('ex 2 >',result)
    
    # list로 형변환을 해줘야 출력이 된다.
    print('ex 2 >',list(result))
    
    # 람다 이용하기
    def ex2_func(x):
        return x**2
    
    result_without_lambda = map(ex2_func, digits1)
    print('ex 2 >', list(result_without_lambda))
    
    def also_square(nums):
        def double(x):
            return x**2
        return map(double,nums)
        # 기능별로 모듈화를 해서 은닉화 가능
    
    print('ex 2 >',list(also_square(digits1)))
  • mapの関数因子はもちろんramda関数で代用できる.
    ゴミ収集器にフィルターをかけることができます.
  • filter


    特定の条件に対応する値のみが収集され、シーケンス形式で返されます.
  • 地図は同じ因子を受け取る.filter(함수, 시퀀스)
  • digits = [1,2,3,4,5,6,7,8,9,10]
    results = filter(lambda i : i % 2 ==0, digits)
    print('ex 3 >',list(results))
    
    def also_evens(nums):
        def is_even(x):
            return x % 2 == 0
        return filter(is_even,nums)
    
    print('ex 3 >',list(also_evens(digits)))

    reduce


    複数の循環可能なシーケンス型データから計算データを蓄積する必要がある場合に使用することが望ましい.
  • モジュールの導入が必要です.from functools import reduce
  • from functools import reduce
    
    digits3 = [ x for x in range(1,101)]
    
    # 가장 마지막 결과값만 반환한다.
    result3 = reduce(lambda x,y : x + y, digits3)
    
    print('ex 4 >',result3)
    # 출력 : ex 4 > 5050
    
    def also_add(digits3):
        def add_plus(x,y):
            return x + y
        return reduce(add_plus,digits3)
    
    print('ex 4 >',also_add(digits3))
    # 출력 : ex 4 > 5050
    [ソース]基礎-すべての人のために用意されたPython:必要な文法Featを学ぶ。オープンソースパッケージの導入