【Pythonチュートリアル】ループに役立つrange()関数

monitor Python

for文を使ったループ処理でよく使われるrange()関数。
組み込み関数であるrange()関数について解説します。

1. for文とrange()関数を使ったループ処理

表記方法は以下の通り。

>>> for 変数 in シーケンス型:
...     実行したい処理

上記で出てくるシーケンス型とは、リストやタプル、range()関数など順序がある複数の要素を持つデータ型のことです。

◆ range()関数を使って、0〜4の値を表示してみます。

>>> for i in range(5):
...       print(i)
0
1
2
3
4

◆ 次にrange()関数を使って、ループ処理の試行回数制御してみます。
例えば、『ユーザにPassword入力をさせる。ただし、3回間違えたらErrorを返す。』ようにしてみましょう。

>>> for i in range(3):
...     pwd = input('Please input your password : ')
...     if pwd == 'abcd':
...         print('Success!!')
...         break
...     else:
...         if i < 2:
...             print('Incorrect!!')
...         else:
...             print('Failed')
...             break

### Login成功 ###
Please input your password : a
Incorrect!!
Please input your password : abcd
Success!!

### Login失敗 ###
Please input your password : a
Incorrect!!
Please input your password : b
Incorrect!!
Please input your password : c
Failed

なんだかそれっぽく書けました。

2. range()関数の返り値はrange型

listを生成したり、for文を使ったループでよく使うrange()関数。
そもそも何者なのか?

range()関数はlistっぽく振舞うので、list型と思いがちですが、実はrange型と呼ばれるオブジェクトです。
これは、繰り返しアクセスすることで、順番に要素を返すイテレータです。

どこが便利なの?

例えば、0〜9999の要素を持つlistを作りたいとします。

num_list = [0, 1, 2, …, 9998, 9999]

と書くよりは、、、

num_list = list(range(10000))

と書いた方が、すごくシンプルですよねー。
見た目のシンプルさ、だけでなくメモリなどのリソース観点でもメリットがあると考えられますので、覚えておきましょう!

参考

タイトルとURLをコピーしました