列挙&リスト生成式/器&反復器&4つの他のコンテナ


列挙
列挙(Enumerate)
  • forループループ実装(インデックスと要素の取得)
  • enumerate
    l = ['a','b','c']
    for i , e in enumerate(l):
        print(i , e)
    
    for i , j in enumerate('abc'):
        print(i , j)
    #         ,    
    
  • を使用
    リスト生成
  • 形式(小さなリストを生成)
  • [値ループ]
  • [値ifサイクルif]
  • example
  • ["{}*{}".format(x,x) for x in range(1,11)]
    
  • 右側加入判定(forループ中加入判定)
    [x for x in range(1,11) if x % 2 == 0]
    
  • 左加入判定(値は分岐形式で与える)
    [x if x > 5 else 0 for x in range(1,11) ]
    
  • .
  • 左右両方とも判定
    [x if x > 5 else 0 for x in range(1,11) if x % 2 == 0]
    
  • が加わる.

    リストジェネレータ
  • データはリストであるが、全体ではなく、不活性モード生成、必要に応じて
  • を生成する.
  • 形式
  • (値ループ)
  • (値ifサイクルif)
  • 取得
  • l = ("{}*{}".format(x,x) for x in range(1,11))
    for i in range(1,10):
        print(next(l),end = " ")
    


  • 反復器
  • Iterable:
    from collections import Iterable
    print(isinstance(a,Iterable))#    a         (   ,     、  、  、  、   )
    
  • Iterator:
    from collections import Iterator
    a_iter = iter(a)#   iter( )               
    print(next(a_iter))#       next( )         ,           value
    

  • 4つの他の容器
    Deque
  • は、前面から
    from collections import deque
    
    dq = deque(['b','c'])
    dq.append('d')
    dq.appendleft('a')
    
    for x in deque:
        print(x,end = " ") # a b c d
    
  • を挿入する.
    NamedTuple
  • 名前付きtuple(インデックス名付き)
  • 形式:受入変数1=namedtuple(‘メタグループ名’,[‘変数名1’,‘変数名2’))受入変数2=メタグループ名(値,値)#受入変数2.変数名1,受入変数2.変数名2呼び出し
    from collections import namedtuple
    
    person = namedtuple('person',['name','age'])
    p = person('Julius',21)
    print(p.age,p.name)
    
  • OrderedDict
  • 辞書無秩序、OrderedDict秩序
    from collections import OrderedDict
    
    
  • odict=OderedDict([(‘a’,1),(‘b’,2),(‘c’,3)])print(odict)#秩序
    odict=OderedDict()odict[‘a’]=1 odict[‘b’]=2 odict[‘c’]=3 print(odict)#秩序
    
    
    ### Counter
    
    -    ,    dict  ,     
    
    - ```python
    from collections import Counter
    
    msg = 'talk is cheap show me the code show me the code'
    letters = msg.split()
    counter = Counter()
    for le in letters:
        counter[le] = counter[le] + 1
        
    for k,v in counter.items():
        print(k,v)