2020年12月31日
繰り返し
記事内容の出典:フリーテキスト「Python3入門」
このページの更新:2020/12/31
for 文
for はプログラムの繰り返し(反復)実行のため構文で,次のような形式です.
for 変数 in データ列:
(実行対象のスイート)
for 文は「データ列」から順番に要素を1つずつ取り出して「変数」に受け取り,それを用いた形で「実行対象のスイート」の部分を実行します.(次の例)
for c in 'プログラミング':
print( c )
実行結果:
プ
ロ
グ
ラ
ミ
ン
グ
この例では,文字列 'プログラミング' から1文字ずつ取り出してそれを変数 x に受け取り,スイートの部分でそれを print 出力しています.すなわち「print 関数を反復実行」しているわけです.
in の後ろに記述するデータ列としては,順序のあるデータ構造であれば概ね使用可能です.次の例はリストから要素を1つずつ取り出し,それを用いた print を反復実行するものです.
for x in [1,2,3,4]:
print( x )
実行結果:
1
2
3
4
スイートに関しては if 文の解説記事で説明した形式と同じで,for 文が実行対象(反復対象)とするスイートも複数の行で構成することができ,for の記述位置よりも右側にずらして,なおかつ同じ桁位置から始まる形式(同一インデント)で記述します.スイートを構成する際に注意するべき点としては,空白文字(スペース)とTABを混同しないことです.(次の図)
(図の出典:フリーテキスト「Python3入門」)
range を用いた繰り返し
for 文による繰り返しで頻繁に使用するデータ列が range です.range は整数列と同等のデータ列を作成するものです.(次の例)
for x in range(5):
print( x )
実行結果:
0
1
2
3
4
range が作る整数列は次の通りです.
range( n ) 0 以上 n 未満の整数列(増分は1)
range( n1, n2 ) n1 以上 n2 未満の整数列(増分は1)
range( n1, n2, 増分 ) n1 以上 n2 未満の整数列(指定した増分で)
複数のデータ列を束ねて反復に使用する方法:zip
for 文で使用するデータ列として,複数のデータ列をzipで束ねたもの(下記)を与えることができます.
zip( データ列1, データ列2, … )
これを応用した例を次に示します.
q1 = [1,2,3,4,5,6,7]
q2 = 'プログラミング'
for x,y in zip(q1,q2):
print(x,y)
実行結果:
1 プ
2 ロ
3 グ
4 ラ
5 ミ
6 ン
7 グ
この例のように,for の後ろに x, y と2つの変数を用意し,束ねられた2本のデータ列からそれぞれ値を受け取るようにしています.もしも for の後ろの受取り用変数を1つだけにすると次のような結果となります.
q1 = [1,2,3,4,5,6,7]
q2 = 'プログラミング'
for x in zip(q1,q2):
print(x)
実行結果:
(1, 'プ')
(2, 'ロ')
(3, 'グ')
(4, 'ラ')
(5, 'ミ')
(6, 'ン')
(7, 'グ')
このように,各列から取り出した要素をタプルにして変数に受け取ります.
注意)長さの異なるデータ列を zip で束ねると,最も短いデータ列に揃えられてしまいます.
データ列に番号を与えて反復に使用する方法:enumerate
繰り返しに使用するデータ列に通し番号を付けるには enumerate(下記)を使用します.
enumerate( データ列 )
これを使用した例を次に示します.
for i,x in enumerate('プログラミング'):
print(i,x)
実行結果:
0 プ
1 ロ
2 グ
3 ラ
4 ミ
5 ン
6 グ
このように,データ列の要素に対する番号が変数 i に得られています.
while 文
for 文は与えられたデータ列を基にした形の繰り返し実行をするものですが,次に説明する while 文は与えられた条件を基に繰り返し実行します.while 文の書き方は次の通りです.
while 条件式:
(実行対象のスイート)
while 文の使用例を次に示します.
n = 0
while n < 5:
print( n )
n += 1
実行結果:
0
1
2
3
4
これは「nが5未満である間,print と n+=1 を実行する」というプログラムの例です.
繰り返しの中断
for や while による繰り返しの最中に break を実行すると繰り返し処理を強制終了することができます.(次の例)
n = 0
while True:
print( n )
n += 1
if n > 4:
break
実行結果:
0
1
2
3
4
このように「while True:」の形で無限反復の形にして,繰り返し処理中の判断で break を実行して while 文を終了するというのもプログラミング手法の1つです.
Python3 の基礎 − 超入門・再入門 −
【このカテゴリーの最新記事】
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/10441893
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック