LoginSignup
53
40

More than 5 years have passed since last update.

【Python入門】range関数で繰り返し処理をする方法とは?

Posted at

※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。

参考サイト:【Python入門】range関数で繰り返し処理をする方法とは?

【Python入門】range関数で繰り返し処理をする方法とは?

Pythonではfor文を使って一定の回数だけ処理を繰り返すことがあります。その際に、数値のリストを用意してその長さだけ回すこともできますが、rangeを使うともっと楽に、Pythonらしい記述をすることができます。

今回はPythonのrangeの使い方について説明します。

rangeの使い方

Pythonで一定回数処理を繰り返す場合は、その回数文の長さのリストを使うことで実現できます。例えば、5回繰り返したい場合は長さ5のリストを使います。

list1 = [1, 2, 3, 4, 5]
count = 0

for x in list1:
    count += 1

print('ループ回数:{}'.format(count))

実行結果

ループ回数:5

この方法でも問題はありませんが、例えば100回や1000回といった長い回数繰り返す場合は、それだけの長さのリストを用意するのは面倒ですし、時間もかかります。

特定の数だけループを繰り返したい場合はrange関数を使いましょう。range関数は指定した長さの、連続した整数のリストを自動で生成する関数です。for文とrange関数を組み合わせることで、任意の回数だけループをすることができます。

for 変数 in range([始まりの数値,] 最後の数値[, 増加する量]):
    #ループ処理

rangeには始まりの数値、最後の数値、増加する量の3つの引数がありますが、このうち始まりの数値と増加する量は省略することができます。range()に数値を1つ渡すと、それが最後の数値となり、0から「最後の数値 – 1」までの値が格納されたリストが作成されます。

count = 0

for x in range(5):
print(x)
    count += 1

print('ループ回数:{}'.format(count))

実行結果

0
1
2
3
4
ループ回数:5

この例ではrange()に5を渡しているので、「0から4までの要素を持つ長さ5のリスト」が作られ、そこから一つずつ要素を取り出すので、5回のループを行うことができます。最初の数字を0ではなく任意の数字にしたい場合は、引数の「始まりの数値」を入力します。

count = 0

for x in range(1, 5):
    print(x)
    count += 1


print('ループ回数:{}'.format(count))

実行結果

1
2
3
4
ループ回数:4

rangeの引数を(5)から(1,5)に変更しました。これにより、rangeによって返されるのが「1から4までの要素を持つ長さ4のリスト」になったので、ループ回数が4回になりました。

また、「増加する量」を指定すれば、次の要素に追加される値も自由に変えることができます。これにより、0から8まで2ずつ増えるリストや、0から9まで3ずつ増えるリストなどを簡単に作ることができます。

count = 0

for x in range(0, 10, 2):
    print(x)
    count += 1

print('ループ回数:{}'.format(count))

実行結果

0
2
4
6
8
ループ回数:5

この例では開始が0, 最後が10になっていますが、増える量を2にしています。そのためrangeは「0から8まで2ずつ増える長さ5のリスト」を返すことになるので、ループ回数は5回となります。

また、rangeでは負の数を使うことができます。始まりの値と最後の値を逆にし、増える量を負の数にすることで、逆順に並んだリストを作成することもできます。

count = 0

for x in range(10, 0, -2):  #負の数を渡す
    print(x)
    count += 1

print('ループ回数:{}'.format(count))

実行結果

10
8
6
4
2
ループ回数:5

xrangeとの違い

Pythonのバージョンが2.x.xの場合は、rangeとよく似た関数としてxrangeがあります。xrangeは使い方や実行結果はrangeと全く同じです。

count = 0

for x in xrange(5):
print(x)
    count += 1

print('ループ回数:{}'.format(count))

実行結果

0
1
2
3
4
ループ回数:5

では、rangeとxrangeとの違いは何かというと、xrangeのほうがメモリを節約できるという点です。rangeは引数で指定された要素を持つリストを作り、そのリストから要素を取り出すようにしてfor文を実行します。これに対してxrangeでは最初にリストを作ってからfor文を実行するのではなく、for文で取り出す際に必要に応じて値を生成します。つまりリストを作らないため、同じ処理を行う上でもxrangeのほうがメモリを節約することができます。

ただ、rangeとxrangeの差はとても些細なものなので通常ではわざわざxrangeを使う必要がありません。基本的にはrangeを使うとよいでしょう。

また、Python3系では、rangeの構造がxrangeに近いものになったのでxrange自体が廃止されてしまいました。そのため、Python3系の場合は特に気にせずrangeを使うとよいでしょう。

53
40
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
40