[PYTHON] Comprehension



List Comprehension


[式for要素inリストif文]
  • より前の
  • a = []
    for i in range(5):
        a.append(i)
    # a = [0, 1, 2, 3, 4]
  • a = [i for i in range(4)]
    # [0, 1, 2, 3, 4]
  • 単一ifゲート
  • [i for i in range(5) if i % 2 == 0]
    # [0, 2, 4]
    [i for i in range(5) if i % 2 == 1]
    # [1, 3]
  • ifelse文
    すべての偶数がリストに含まれ、奇数の場合はNoneがリストに含まれます.
  • [i if i % 2 == 0 else None for i in range(5)]
    # [0, None, 2, None, 4]
  • ドアオーバーラップ
    1から5の間の数字に7から9を乗じた結果.
  • [i*j for i in range(1,6) for j in range(7,10)]
    # [7, 8, 9, 14, 16, 18, 21, 24, 27, 28, 32, 36, 35, 40, 45]

    Set Comprehension


    {入力シーケンス内の要素の出力式[if条件式]}
  • 入力シーケンスで指定する式に従って新しいSet
  • を構築する.
  • リスト統合とほぼ同じですが、結果はSet...}に戻ります.
  • シーケンス(oldlist)は、数値的に繰り返されるリスト
  • である.
  • セットは重複を許さないので、重複データ
  • は自然に消去される.
  • セットは要素の順序を保証しないので、出力の結果はランダムです.
    oldlist = [1, 1, 2, 3, 3, 4]
     
    newlist = [i*i for i in oldlist]
    # [1, 1, 4, 9, 9, 16]
    
    newlist = {i*i for i in oldlist}
    # {16, 1, 4, 9}

    Dictionary Comprehension


    入力シーケンスの要素{Key:Value for[if条件式]}
  • 入力シーケンスで指定する式に従って新しいDictionaryセット
  • を構築する.
    id_name = {1: '박진수', 2: '강만진', 3: '홍수정'}
     
    name_id = {val:key for key,val in id_name.items()}
     
    print(name_id)
     
    # 출력 : {'박진수': 1, '강만진': 2, '홍수정': 3}