for文
では主に次の2つの方法で、繰り返し処理を制御できます:
- リストや辞書型などから要素を1つずつ取り出して繰り返し
range()
関数で数列を作って繰り返し
今回は、2つ目のrange()
関数でfor文
を制御する方法について解説します。
1つ目のリストや辞書型から要素を取り出して繰り返す方法は、こちらで解説しています。
for i in range()の処理フロー:
range()
関数は規則的な数列:
0, 1, 2, 3, 4
など
を作成することができます。
そのため、for文
と組み合わせると、繰り返し処理を制御できます。
range()
関数で数列を逐次生成for文
の制御変数
で数列の要素
を1つ受け取る特定の処理
を実行- 次の
要素
を受け取る⇒特定の処理
を実行⇒次の要素
⇒…
という処理フローになっています。
range()
関数では、引数で数列の始点・終点や間隔を設定できます。
range(start, stop, step)
start
⇒ 始点(デフォルト値:0
)stop
⇒ 終点step
⇒ 数列の間隔(デフォルト値:1
)
この記事では、よくfor文
と組み合わせて使用する:
range(stop)
|stop
回繰り返しrange(start, stop)
|制御変数start
⇒stop-1
で繰り返しrange(start, stop, step)
|制御変数をstep
間隔で繰り返し
について使用方法を紹介していきます。
range(stop)|stop回繰り返す
引数にstop
だけを与えると、range()
は0
からstop-1
までの連続する整数列を生成します。
range(stop)
⇒0, 1, …, stop-1
for文
では制御変数にrange()
の数列を1つずつ受けながら実行
- 数列は
0
から始まるため、数列の要素数はstop
個 - ⇒
for文
の繰り返し回数もstop
回
stop = 3
の例を見てみましょう。
for i in range(3):
print(i)
# 0
# 1
# 2
# ↑↑stop = 3は含まれていない↑↑
このとき終点stop
の値は含まれない点に注意しましょう。
range(start, stop)|制御変数start⇒stop-1で繰り返し
引数を2つ与えることで、range()
はstart
からstop-1
までの連続する整数列を生成します。
range(start, stop)
⇒start, start + 1, …, stop-2, stop-1
for文
では制御変数にrange()
の数列を1つずつ受けながら実行
start = 10
, stop = 13
の例を見てみましょう。
for i in range(10, 13):
print(i)
# 10
# 11
# 12
# ↑stop = 13は含まれていない
このとき終点stop
の値は含まれない点に注意しましょう。
range(start, stop, step)|制御変数をstep間隔で繰り返し
引数を3つ与えることで、range()
はstart
からstop-step
までのstep
間隔の連続する整数列を生成します。
range(start, stop, step)
⇒start, start + step, …, stop-step
for文
では制御変数にrange()
の数列を1つずつ受ながら実行
start = 10
, stop = 20
, step = 2
の例を見てみましょう。
for i in range(10, 20, 2):
print(i)
# 10
# 14
# 16
# 18
# ↑stop = 20は含まれていない
このとき、stop
の値は含まれない点に注意しましょう。
step
を使用すれば、偶数列や奇数列、等差数列を簡単に生成することができます。
for i in range(1, 20, 2):
print(i, end=",") # print()関数実行後の改行を回避
# 1,3,5,7,9,11,13,15,17,19,
等差数列とは隣り合う要素の差が一定間隔の数列です。
次の例では7ずつ増加しています。
for i in range(1, 31, 7):
print(i, end=",")
# 1,8,15,22,29,
これを2重forループ
と組み合わせるとカレンダー風の出力もできます。
for i in range(1, 31, 7):
for j in range(i,i+7):
print(j, end=",") # print()関数実行後の改行を回避
print("\n") # \nは改行を意味します
# 1,2,3,4,5,6,7,
# 8,9,10,11,12,13,14,
# 15,16,17,18,19,20,21,
# 22,23,24,25,26,27,28,
# 29,30,31,32,33,34,35,
これはformat文
などで巧みに文字列を結合・操作すれば、もう少しキレイに表示できます。
とはいっても、pythonでカレンダーを画面に出力することはないと思います…。
カレンダー操作ならGoogle APIを使った方が楽しいです。
おわりに
今回はrange()
関数とfor文
を組み合わせる方法について紹介しました。
リストや辞書型から要素を取り出しながらfor文
を回す方法は、こちらで紹介しています。
for文はリストやタプル、辞書型のメソッドと組み合わせることも多いです。
for文
の中で、条件を満たした場合は、特殊な処理をするということも多く、条件分岐のif文
との組み合わせも必然的に多いです。
Python超入門シリーズでは、pythonの基本を解説動画、図解付きで初心者の方向けに解説しています。
解説動画は楽しみながらpythonを学べる動画を目指しています⇒動画チャンネル
Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。
気楽にツイートしているので、気軽にフォローしてください!