【Python学習】python学習マニュアル--第13章whileとforサイクル


whileサイクル
whileループは、ある条件を検出し、条件が真であればwhileコマンド内のコードブロックを実行します.
一般書式
最も完全なフォーマットは、最初の行とテスト式、同じコードのインデントを持つ1つ以上の列、およびオプションのelseセクションです.
while :
    
else:                       #else          break        ,       
    

Pythonには他の文でいうdoはありません....untilループ文.この効果を達成するには、break文を使用します.
break,continue,passおよびループelse
ステートメント
説明
コメント
break
最近のループから飛び出す
ループ文全体をスキップ
continue
ループ文の次の反復を直接実行
ループ文の先頭にジャンプし、ループを続行
pass
何もしない
空の文のプレースホルダ
ループelse
ループが正常に終了するとelseコードブロックが実行されます
正常な終了はbreak文に実行されません.ループマスター文が実行されていない場合もelse部分が実行されます
pass文は通常、複合文または関数の空のボディを記述するために使用されます.複合文または関数は、プログラミング後に実装されるとき、プログラムが構文または他のエラーを生じないように、passを使用して文または関数の実行をスキップします.以下のようにします.
def fun():
   pass
while :
   pass

forサイクル
forループはPythonでよく使われるループで、一般的なシーケンス反復器です.任意の秩序化されたシーケンスオブジェクト内の要素を反復するために使用できます.
一般書式
for  in <object>:  #           ,  object      ,          。
    
else:
                  #   else   while else        ,    break     。

ループ作成テクニック
forサイクルは多数のカウンタ式のサイクルを含む.一般的に、forはwhileより書きやすく、実行速度も速い.場合によっては、pythonが提供する組み込み関数を使用して反復する特定の方法が必要です.
  • 組み込み関数rangeは、forのインデックスとして使用できるいくつかのカラムが連続的に増加した整数を返します.
  • 内蔵zip関数は、for内遍歴数シーケンスとして使用できるパラレル要素のメタグループの構成を返します.
  • >>> range(6)
    range(0, 6)
    >>> list(range(6))
    [0, 1, 2, 3, 4, 5]
    >>> list(range(2,5))            #         ,           
    [2, 3, 4]
    >>> list(range(2,5,2))
    [2, 4]
    >>> list(range(2,10,2))          #         
    [2, 4, 6, 8]
    >>> 

    パラレルループ:zipとmap
    内蔵関数rangeを使用すると、forサイクルでシーケンスを不完全に遍歴できます.内蔵zip関数もforループを使用して複数のシーケンスを並列に使用します.
    >>> l1=[1,2,3,4,5]
    >>> l2=[6,7,8,9,0]
    >>> zip(l1,l2)
    0x7f8f149fe7c8>
    >>> list(zip(l1,l2))
    [(1, 6), (2, 7), (3, 8), (4, 9), (5, 0)]
    >>> l2=[6,7,8,9]                           #    l2        ,zip      “  ”      
    >>> list(zip(l1,l2))
    [(1, 6), (2, 7), (3, 8), (4, 9)]
    >>> for (a,b) in zip(l1,l2):               #zip       ,          。
    ...     print(a,b)
    ... 
    1 6
    2 7
    3 8
    4 9
    >>> 

    mapには関数とシーケンスがあり、シーケンスの各要素をこの関数に適用し、関数結果を返します.
    >>> map(int,'123456')
    <map object at 0x7f8f1730f588>
    >>> list(map(int,'123456'))
    [1, 2, 3, 4, 5, 6]
    >>> 

    zip関数を使用すると、辞書を巧みに構築できます.
    >>> l1
    [1, 2, 3, 4, 5]
    >>> l2
    [6, 7, 8, 9]
    >>> for (x,y) in zip(l1,l2): D[x]=y            #          ,          
    ... 
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'D' is not defined
    >>> D={}
    >>> for (x,y) in zip(l1,l2): D[x]=y
    ... 
    >>> D
    {1: 6, 2: 7, 3: 8, 4: 9}
    >>> D2=dict(zip(l1,l2))              #          , dict   ,                 
    >>> D2
    {1: 6, 2: 7, 3: 8, 4: 9}
    >>> 

    オフセットと要素の生成:enumerateにはいくつかのループがあり、この反復のループ内のオフセット量を得る必要があります.
    >>> for (x,y) in enumerate("abcdefg"):    #enumerate         ,          
    ...   print("index:",x,"    ",y)          #    ,        __next__  ,          
    ... 
    index: 0      a
    index: 1      b
    index: 2      c
    index: 3      d
    index: 4      e
    index: 5      f
    index: 6      g
    >>> 

    小結
    Pythonでは,ループはよく見られる複合文であり,本章ではループ文,およびループ文の使用関数と使用テクニックについて論じた.while文は汎用的なループ文であり、forループ設計は1つのシーケンス内で各要素を遍歴するために使用されます(シーケンスは本当に反復可能である必要があります).zip関数は、パラレル2つのリストをループするために使用されます.range関数は連続値を生成するために使用され、for文でループ制御を行うことができます.