😺

[Python]rangeの使い方

2021/05/02に公開

よく見るrangeの使い方

よく見る使い方としては、こんなところでしょうか?いちばん基本的な使い方ですね。

for i in range(3):
    print(i)

"""出力結果
0
1
2
"""

引数

まずは引数から確認していきます。

公式サイトを参考に、引数名を記載しましたが、使用する際に名前の指定はいりません。引数の数から自動で判断して実行してくれます。

引数に与えられる数値は整数のみです。

引数名 デフォルト値 解説
start 0 開始するときの数値を指定できる。
stop なし(要指定) どの数値まで取得するかを指定できる。 stopで指定した値自体は含まないので注意
step 1 startからstopに到達するまでに数値をいくつずつ進めるかを指定できる 例えば、2を指定した場合、(start=0だとして)0,2,4のように進む 数値を減少させたい場合はマイナスを指定する必要がある。

基本的な例

引数stopのみ

0からスタートして、1ずつ増加していく、5を含まない(= 4まで含んだ)ところで終了。

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

startを指定する

1からスタートして、1ずつ増加して、5を含まない(=4まで含んだ)ところで終了。

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

stepを指定する

0からスタートして、2ずつ増加して、5を含まない(=4まで含んだ)ところで終了。
「奇数」、「偶数」、「特定の倍数のみ」の数値を扱いたい時にstepを使ってやるととても便利ですね。

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

stepを指定する場合は、startの値が例え0(デフォルト値)であってもを明示的に指定する必要があります。
例えば、以下のように書いてしまうと、start=5, stop=2のように認識されてしまうからです。

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

少し応用した例

数を減少させる(カウントダウン)

基本的にstepを増加させることが多いと思いますが、カウントダウンのように数値を下げたい時があります。そんな時は、stepにマイナスを指定します。
stepにマイナスを指定するということは、startがstopより大きい数値でないと意味がないのでそこは気をつけましょう。

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

偶数のみを表示する

stepをうまく活用すれば、偶数のみを表示するようなプログラムをif文を使わずに書くことができます。

if文で書いた例
for i in range(5):
    if(i%2==0):
        print(i)
stepを活用した例
for i in range(0,5,2):
    print(i)

参考

https://docs.python.org/ja/3/library/stdtypes.html?highlight=range#range

Discussion