Python3のrange関数の使い方


はじめに

未来電子テクノロジーでインターンをしている坂口です。
今週はPython3を使ってHackerrankの問題に取り組んだりしていたのですが、なかなかに難しくて早くも挫折しかけています…。
ということで(?)、今週はPython3のrange関数の使い方を自分メモとして書いていきます。

range関数とは

range関数は連続した数字のオブジェクトを作る機能を持った関数です。
Python以外の言語にも存在する概念ですが、for文をよく使うPythonとは特に相性がいいようです。
rangeは和訳すると"範囲"という意味であり、rangeの基本的な使い方は数字の範囲を指定することになります。

range(stop)

range(stop)のように、引数に整数を1つ設定すると、0 ≦ i < stopまでの連番の数列を作ることができます。
引数stopの値は結果には含まれないので、注意が必要です。
例えば、

In: print(list(range(3)))

Out: [0, 1, 2]

となります。

range(start, stop)

range(start, stop)のように、引数に整数を2つ設定すると、start ≦ i < stopの連番の数列を作ることができます。
引数startの値は結果に含まれるのに対して、引数stopの値は含まれないので注意が必要です。
例えば、

In: print(list(range(3, 6)))

Out: [3, 4, 5]

となります。

range(start, stop, step)

range(start, stop, step)のように、引数に整数を3つ設定すると、start ≦ i < stopの範囲でstepずつ増加する等差数列を作ることができます。
例えば、

In: print(list(range(3, 12, 2)))

Out: [3, 5, 7, 9, 11]

となりますし、stepに負の整数を入れれば、

In: print(list(range(12, 9, -1)))

Out: [12, 11, 10]

のように降順の数列を作ることもできます。

for文との組み合わせ

for文を使うと、ループ処理をしながらrange関数を出力することができます。
例えば、

In: for i in range(5)
    print(i)

Out: 0
     1
     2
     3
     4

という具合になります。pythonで多用されるrange関数の使い方です。

まとめ

ここまでrange関数のことを説明してきて今さら?って感じではあるのですが、pythonにはrange関数を使わなくても数列を作れる、スライスという便利な機能もあるらしい…。
初心者には違いがまだよくわかっていないのですが、仕組みとしては似ているようです。どちらも使えるようになったら便利かも。
また、当方プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし誤りがあれば修正するのでどんどん指摘してください。よろしくお願いいたします。

参考URL

Pythonのrange関数の使い方
https://note.nkmk.me/python-range-usage/