##はじめに
未来電子テクノロジーでインターンをしている坂口です。
今週は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/