【python】range関数の4つの使い方とfor文との組み合わせ

スポンサーリンク
Python

この記事でお伝えすること

  • pythonにおけるrange関数の使い方
  • for文range関数を組み合わせた使い方

を紹介していきます。

いざ、range関数を使おうとすると、「pythonのrangeの使い方がどう使えばいいか分からない!」

こういう結果をfo文で出力したい場合はどうやってrangeを使えばいい?

とpython初心者の方は悩むと思います。

ふと忘れた時に困るfor文で思い通りに数値を並べるためのrange関数の使い方

本記事でrangeの意味や使い方、for文を組み合わせた使い方を解説していきます。

rangeの使い方

rangeはある特定の範囲の数を持つという意味があります。

rangeの使い方を細かくみると主に4つの使い方があります。

使い方4つを以下に示します。それぞれ細かな違いですが、出力結果は大きく異なります。

  • 0から指定値まで連続の数字を持つ
  • 指定の範囲内で連続の数字を持つ
  • 指定の範囲内で指定の増え方で数字を持つ
  • 指定の範囲内で指定した減り方で減らす

0からなのか、指定の範囲内か、指定の増え方か、減り方かなど違いがあります。

それぞれの解説とサンプルコードを示していきます。

0から指定値まで連続の数字を持つ

range(stop)

rangeに入れる引数を一つの数値とします。

するとstopの引数として数値が入ることになります。

この場合は0から入れた引数の一つ前までの整数を返します。

list(range(5))
>> [0, 1, 2, 3, 4]

rangeのstopの引数として5を入れて、リストとして出力しました。

すると、0から5の一つ前の4までを一つずつ出力されます。

ここで、引数とした数値の一つ前までが注意するポイントです。

list(range(5.1))
>>TypeError: 'float' object cannot be interpreted as an integer

stop引数として、整数(integer)ではなく、小数(float)5.1を入力してみます。

rangeはintegerしか受け付けないため、これはエラーとして返ってきます。

list(range(0))
>>[]

stop引数として0を入れると、何も出力されません。

0から0のひとつ前(-1)まで、1ずつ増加という訳の分からない意味になるため、空の結果となります。エラーにならないのはpythonの優しさですね。

ここでわかることは、stop引数への入力は1以上でないといけないです。

指定の範囲内で連続の数字を持つ

range(start,stop)

rangeに入れる引数を二つの数値とします。

するとこの二つはstartとstopの引数とされます。

この場合、startとした引数の数値からstopとした引数の一つ前までの整数を返します。

list(range(1,5))
>>[1, 2, 3, 4]

rangeのstartの引数として1、stopの引数として5を入れて、リストとして出力します。

すると、1から5の一つ前の4までを一つずつ出力されます。

このように引数を2つとした場合、start引数からstop引数とした数値が連番で出力されます。

list(range(5,1))
>>[]

次に先程とは反対にrangeのstart引数として5、stop引数として1を入力します。

すると、出力結果は空です。

これは5から0まで1ずつ増加という意味になるため、意味が通らずこのような結果になります。

ここからstart < stopという条件が必要です。

list(range(1.1,5))
>>TypeError: 'float' object cannot be interpreted as an integer

start引数に1.1という小数(float)を入力すると、エラーが返ってきます。

ここからstartの引数にも整数が必要になってきます。

指定の範囲内で指定の増え方で数字を持つ

range(start,stop,step)

rangeに入れる引数を三つとします。

するとstartとstopとstepの引数として入れられます。

この場合、startとした引数の数値から、stop引数の一つ前まで、stepの引数ごとに順列に返します。

list(range(1,5,2))
>>[1, 3]

rangeのstart引数に1、stop引数に5、step引数に2を入れます。

すると1から二つずつ増加して4までの数値を出力します。それが1,3です。

このように引数を3つとした場合、start引数からstop引数の一つ前までstepで指定した毎に数値が出力されます。

list(range(1,5,10))
>>[1]

次にrangeのstart引数に1、stop引数に5、step引数に10を入れた場合を見てます。

これも1から10ずつ増加して5までの数値を出力しますが、指定範囲の1−5を超えてしまい、結果最初の1のみが出力されます。

このようにstart引数からstop引数の範囲を超えたstep引数を入力すると、最初のstart引数しか出力されません。

list(range(1,5,2.5))
>>TypeError: 'float' object cannot be interpreted as an integer

step引数に2.5という小数(float)を入力すると、エラーが返ってきます。

ここからstepの引数にも整数が必要になってきます。

指定した減り方で減らすことも可能

range(start,stop,-step)

ここではrangeに入れる引数を先程と同じように三つとしますが、stepにマイナスを入れます。

すると、startとした引数の数値から、stopの引数の一つ前まで、step引数ごとに逆順に返します。

list(range(5,1,-2))
>>[5, 3]

rangeのstart引数に5、stop引数に1、step引数に-2を入れます。

すると5から二つずつ減少して2までの数値(stop引数の一つ前)を出力します。それが5,3です。

このように引数を3つとした場合の動きは先程と変わりないです。

しかし、step引数にマイナスを入れた場合、start引数>stop引数としなければなりません。

それが分かるのが次の例です。

list(range(1,5,-2))
>>[]

step引数には-2、start引数は1、stop引数に5を入れてみます。

すると、出力は空になります。

これは「1から5まで-2ずつの数値」となるため、当然空の結果になります。

先ほど説明した通り、step引数にマイナスを入れる場合、start > stopとする必要があります。

list(range(5,1,-10))
>>[5]

では、stepの数値を大きくした場合を見てみます。

5から1まで10ずつ減少させた数値だと、5の次の数でstepが指定範囲を超えます。

そのため、最初の5のみが出力される結果となります。

これは前にも同じ例があったため、分かりやすいですね。

range関数とfor文の出力結果

以上のrange関数の使い方を踏まえて、for文で出力結果を並べてみます。

さまざまな数値の羅列をrangeとfor文で並べたサンプルを作成してみました。

for i in range(10):
    print(i)
>>0,1,2,3,4,5,6,7,8,9

#奇数
for i in range(1,10,2):
    print(i)
>>1,3,5,7,9

#偶数
for i in range(2,10,2):
    print(i)
>>2,4,6,8

#逆順
for i in range(10,0,-1):
    print(i)
>>10,9,8,7,6,5,4,3,2,1

#単純な繰り返し
for i in range(3):
    print('繰り返し')
>>繰り返し,繰り返し,繰り返し

以上がrangeの使い方になります。

pythonをより学習するならpython全般を学習できる「PyQ」をオススメします。

PyQは、pythonの基礎からスクレイピング機械学習Webサイト作成まで広く取り扱っているため、pythonの技術が格段に上がります!

もし気になる方は、一度覗いてみることをオススメします。

「本気でPythonを学びたいあなたへ PyQ」

以上です。

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