python中のitertoolsの使用詳細

4408 ワード

今日はpythonの中にモジュールitertoolsを内蔵していることを了解しました。よく知っています。後でforを少なく書いてもいいですか?😁。
1.無限のローズマリー
1.1 count(start、[step])
count()は二つのパラメータを受け入れます。
  • start:循環開始の数字
  • step:サイクル中の間隔
  • 
    from itertools import count
    
    """
           count()
    """
    c = count(0, 2)
    v = next(c)
    while v < 10:
      v = next(c)
      print(v, end=',')
    1.2 cycle()
    cycleは1 while Trueで、無限ループの中の数字です。
    
    """
          cycle()
    """
    from itertools import cycle
    
    c = cycle('ABCD')
    for i in range(10):
      print(next(c), end=',')
    1.3レピート(elem、[n])
    繰り返しelem,n回
    
    """
          repeat()
    """
    from itertools import repeat
    
    r = repeat(1, 3)
    for i in range(3):
      print(next(r), end=',')
    2.ローズマリー
    2.1 accumulate(p,[func])
    funcの関数を使用して、反復オブジェクトpを累積します。
    
    """
        accumulate()
    """
    from itertools import accumulate
    
    test_list = [i for i in range(1, 11)]
    for i in accumulate(test_list): #    operator.add
      print(i, end=',')
    print()
    for i in accumulate(test_list, lambda x, y: x * y): # operator.mul
      print(i, end=',')
    2.2 chain()
    chain()には複数の反復オブジェクトを入れて、逐一反復しても良いです。
    
    """
        chain()
    """
    from itertools import chain
    
    ch = chain([1, 2, 3], {4: 4, 5: 5}, {6, 7, 8}, (9,), [10, [11, 12]])
    for i in ch:
      print(i)
    
    
    2.3 chain.from_iterable()
    chainと違うところは、
  • chain:複数の反復オブジェクト
  • を受け入れることができる。
  • chain.from_iterable():反復オブジェクトを生成することができるローズマリー
  • を受け入れることができる。
    
    """
        chain.from_iterable()
    """
    def gen_iterables():
      for i in range(10):
        yield range(i)
    
    for i in chain.from_iterable(gen_iterables()):
      print(i)
    2.4 comppress(data、selectors)
    これを見て、sがselectorsの中の元素であることが分かりました。
    (d[0]if s[0])、(d[1]if s[1])、…
    
    """
        compress
    """
    from itertools import compress
    
    print(list(compress(['A', 'B', 'C', 'D'], [0, 1, 1, 1])))
    2.5 dropwhile(pred、seq)
    循環開始の条件は、最初のpred条件を満たさない場合になるまで、遍歴を開始します。
    
    """
        dropwhile()
    """
    from itertools import dropwhile
    
    l = [1, 7, 6, 3, 8, 2, 10]
    print(list(dropwhile(lambda x: x < 3, l)))
    2.6グループoupby
    この感じはとても面白いです。sqlのグループに似ています。by。文字列、リストなどをグループ化できます。
    リターンキーと、グループ内の内容
    
    from itertools import groupby
    
    #         
    for k, g in groupby('11111234567'):
      print(k, list(g))
    d = {1: 1, 2: 2, 3: 2}
    #     value     
    for k, g in groupby(d, lambda x: d.get(x)):
      print(k, list(g))
    
    
    2.7 islice
    これは反復オブジェクトを切断することです。負の数はサポートされていません。ラnge(1,10,2)のような感じがします。
    
    from itertools import islice
    print(list(islice('ABCDEFG', 2,3, None)))
    
    2.8 zip_longest
    これはzipと似ていますが、違うところは:
  • zip終了は、中で最も短い反復対象
  • に依存します。
  • zip_longestの終了は、中で最も長い反復オブジェクトに依存します。
  • 
    from itertools import zip_longest
    
    for x,y in zip_longest([1,2,3],[1,2]):
      print(x,y)
    for x,y in zip([1,2,3],[1,2]):
      print(x,y)
     
    
    
    配列の組み合わせ
    3.1プロジェクト
    入れ子に相当するfor
    
    “”"
            product    for
    “”"
    from itertools import product
    for i,j in product([1,2,3],[4,5]):
    print(i,j
    
    
    3.2 permuttions
    全配列、例えば出力123の全ての場合(1、2、3)、(1、3、2)…
    
    from itertools import permutations
    print(list(permutations('123')))
     
    
    3.3 commbinations(p,r)
    pからすべての長さrの配列を探し出します。順序があります。
    
    from itertools import combinations
    print(list(combinations([1,2,3],2)))
    3.4 commbinations_with_replaccement()
    pからすべての長さrの配列を探し出して、順序がありますが、自身を含めて重複するという意味です。
  • cobinations uwith_replaccement(‘ABCD’,2)
  • AA AB AC AD BB BC BD CC CD DD
  • 理解は分かりましたが、使う時は覚えられますか?
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。