for文の書き方とrange関数の使い方
for 文の例①(リスト)
for文は繰り返し処理の最も基本となる文法である。1から10までの整数を表示する、という処理の場合は以下のように書いても良いが、このコードは汎用性に乏しく冗長である。
print(1) print(2) print(3) print(4) print(5) print(6) print(7) print(8) print(9) print(10)
このような場合はfor文を用いて
for num in [1,2,3,4,5,6,7,8,9,10]: print(num)
と書き替えられる。「for 変数 in リスト」の形式で書くと、変数にリストの要素が次々に代入される。これによりリストの要素の数の分だけ繰り返し実行することができる。
リストの要素が整数である必要は無く、例えば
for fluit in ["apple", "banana", "cherry"]: print(fluit)
とすれば
apple banana cherry
と出力される。なお、Pythonではインデントを揃えることでfor節やif節、while節のかたまりを表現している。
for 文の例②(range関数の使い方)
しかし1から100までの整数を出力する、といった場合はリストを書くのが大変なのでrange関数を利用する。
for i in range(1, 101):
print(i)
range関数により、いわゆるイテラブルオブジェクトが生成されるが、range(1, 100) としてしまうと1から99までしか出力されないので注意が必要である。
なお、以下のように要素数のみを指定した場合は0から100までの整数列が生成される(1からではないので要注意)。
for i in range(101):
print(i)
range関数を使うと簡単に連続する整数列を生成できる。例えば100から120までに関する「FizzBuzz問題」のコードの例は次のようになる。
for i in range(100, 121):
if i % 15 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else: print(i)
このように、range関数によるイテラブルオブジェクトの作り方には
① 要素数を指定する方法(0スタート)
② 始点と終点を指定する方法(終点より1小さい数まで生成)
の2通りがある。②の方法では必ず range(小さい数, 大きい数) の順で書くこと。大小が左右で逆転しているとrange関数は何も生成しない。
なお、range関数への引数としては負の整数を渡すこともできる。ただし小数を渡すとエラーになるので注意。
また、range関数により作成したイテラブルオブジェクトをlist化すれば整数列のリストを生成することも容易。これは覚えておく価値がある方法である。
print(list(range(101)))
# 0 から 100 までの整数列のリストを返す
print(list(range(1,101)))
# 1 から 100 までの整数列のリストを返す