Pythonプログラミング思想(12):for-inサイクル


『Pythonプログラミング思想』総目録
『Pythonプログラミング思想』コラム
下一篇:Pythonプログラミング思想(11):while循环
目次
1.for-inサイクルの基礎知識
2.for-inで変数のメタグループとリストを循環する
3.for-inで辞書を巡回する
4.統計リストの単語の出現回数
1.for-inサイクルの基礎知識
for-inループは、範囲、リスト、要素、辞書などの反復可能なオブジェクトに含まれる要素を巡回するために使用できます.for-inループの構文フォーマットは次のとおりです.
for    in    |  |   :
    statements

上の構文フォーマットは次のように説明されています.
  • for-inループの変数の値はfor-inループによって制御され、この変数は各ループの開始時に自動的に付与されるので、プログラムはループの中でこの変数に付与すべきではない.
  • for−inループは、反復可能な任意のオブジェクトを巡回するために使用することができる.反復可能オブジェクトとは、オブジェクトにiterメソッドが含まれ、メソッドの戻り値オブジェクトがnext()メソッドを有することを意味する.

  • 次のプログラムはfor-inループで階乗を計算します.
    サンプルコード:for-inループ.py
    str_n = input("              n:")
    n = int(str_n)
    result = 1
    #   for-in      
    for i in range(1, n + 1):
        result *= i
    print(f'{n}    {result}')

    このコードは入力したnに基づいて何回ループするかを決定します.ユーザが10を入力したと仮定すると、ループは1〜10の間でループする(1〜10を含む).すなわち,for−inループは10回自動的にループし,ループのたびにiの値はrangeに含まれる各要素(1から10)に自動的に与えられる.
    このプログラムを実行します.10を入力すると、次の実行結果が表示されます.
                  n:10
    10    3628800

    ここでfor-inの変数をループカウンタと呼ぶことができる.
    2.for-inで変数のメタグループとリストを循環する
    for-inループの主な役割の1つは、メタグループとリストを巡ることです.メタグループとリストの要素がどれだけあるか、for-inループは何回かループします.ループごとに、ループカウンタには現在の要素の値が順次与えられます.
    次のコードはfor-inループでメタグループとリスト内のすべての要素をそれぞれ巡回します.ここで、リストを巡回すると、リスト要素が数値タイプであるかどうかを判断し、もしそうであれば、これらの値を加算し、数値タイプ値の個数を統計します.
    サンプルコード:for-inでメタグループとリストをループ.py
    a_tuple = ('  ', '    ', '    ')
    for value in a_tuple:
        print('     :', value)
    print('-------------')
    new_list = [15, 44, 3.2, 64, True, 'hello world', 56, '    ', 6666]
    my_sum = 0
    my_count = 0
    for value in new_list:
        #             
        if isinstance(value, int) or isinstance(value, float):
            print(value)
            #      
            my_sum += value
            #         1
            my_count += 1
    print('  :', my_sum)
    print('   :', my_sum / my_count)

    このコードを実行すると、次のように出力されます.
      : 6849.2
       : 978.4571428571428

    上のコードでは、メタグループとリストを反復できますが、メタグループとリストのインデックスはありません.つまり、for-inループでは、現在メタグループまたはリストに遍歴している要素が分かりません.ただし、for-inループは、インデックスを使用してメタグループとリストを巡回し、インデックスを使用してメタグループまたはリストの特定の要素にアクセスすることもできます.コードは次のとおりです.
    サンプルコード:for-inループメタグループとリスト.py
    a_list = [230,False, 50.12, '    ', -3.0]
    #   0 len(a_list)   
    for i in range(0, len(a_list)) :
        #           
        print(" %d     %s" % (i , a_list[i]))

    このコードを実行すると、次のように出力されます.
     0     230
     1     False
     2     50.12
     3         
     4     -3.0

    3.for-inで辞書を巡回する
    辞書はメタグループと辞書とは異なり、メタグループと辞書の各要素には1つの値しかありません.辞書の各要素にはkeyとvalueの2つの値があります.辞書には3つの方法が含まれている必要があります.
  • items():辞書内のすべてのkey-valueペアのリストを返します.
  • keys:辞書のすべてのkeyのリストを返します.
  • values:辞書内のすべてのvalueのリストを返します.

  • したがって、辞書を巡回する場合は、辞書の上の3つの方法の1つを呼び出して、辞書のすべてのkey-valueペア、すべてのkey、すべてのvalueを取得してから、巡回することができます.次のコードのようにkey-valueペアを先に巡回し、keyとvalueをそれぞれ巡回します.
    my_dict = {'Python': 120, 'Java': 131, 'Go': 119}
    #   items()      key-value 
    #   items          key-value ,         
    for key, value in my_dict.items():
        print('key:', key)
        print('value:', value)
    print('-------------')
    #   keys()      key
    for key in my_dict.keys():
        print('key:', key)
        #    key  value
        print('value:', my_dict[key])
    print('-------------')
    #   values()      value
    for value in my_dict.values():
        print('value:', value)

    4.統計リストの単語の出現回数
    辞書は非常に役に立ちます.たとえば、リストに表示される単語の数を統計できます.コードは次のとおりです.
    例コード:統計リストに文字列が出現する回数.py
    src_list = [120, 3.4, 3.4, 121, 120, 40, 3.4, 'Python', 45, 3.1]
    statistics = {}
    for value in src_list:
        #        value   key
        if value in statistics:
            #  value         1
            statistics[value] += 1
        #         value   key,         
        else:
            #  value          1
            statistics[value] = 1
    #   dict,           
    for ele, count in statistics.items():
        print("%s      :%d" % (ele, count))

    プログラムの実行結果は次のとおりです.
    120      :2
    3.4      :3
    121      :1
    40      :1
    Python      :1
    45      :1
    3.1      :1

    上のコードの基本原理は、すべての出現した原生を統計し、出現した要素の出現回数をstatistics辞書に保存し、存在する場合は累計1、存在しない場合は、この単語に初めて出会ったことを説明し、statisticsにおけるkeyに対応するvalueを1に割り当てることである.