【Python】range()
Python の組み込み関数 range() は連続数字シーケンスである rangeオブジェクト を生成します。たとえば range(10) は 0 から 9 までの 10 個の要素をもつシーケンスを生成します。rangeオブジェクトを list() に渡すとリストに変換されます。
# PYTHON_RANGE # In[1] x = list(range(10)) print(x) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 から 9 までの数字を並べる場合は次のように記述します:
# In[2] x = list(range(1, 10)) print(x) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 から始まって 2 ずつ増える等差数列を生成することもできます。
# In[3] x = list(range(1, 10, 2)) print(x) # [1, 3, 5, 7, 9]
一般に range()関数は次のような形で呼びだします。
range([start,] stop[, step])
start は最初の数字で、デフォルト値は 0 です。
stop には最後の数字に 1 を加えたものを指定します。
step はとなり合う数字の差分です。
range() で数字を降順に並べる
range() のオプション引数 step に負の値を指定すると、数字を降順(大きい順)に並べることができます。
# In[4] # 数字を降順に並べる x = list(range(10, 0, -1)) print(x) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
rangeオブジェクトの数字を合計する
range オブジェクトをsum() 関数に渡すと、rangeオブジェクトの要素を合計します。
# In[5] # range(5)の要素をすべて足す # すなわち 1 + 2 + 3 + 4 + 5 を計算する s = sum(range(5)) print(s) # 10
繰り返し処理にrange()を利用する
range()関数 は for と組合わせて繰り返し処理に使うことができます。たとえば range(10) から順に1つずつ値を取り出すときには次のように記述します。
# In[6] # rangeオブジェクトから順に値を取り出す for x in range(10): print(x, end = "") # 0123456789
for は range オブジェクトの最初から最後の要素まで順に取り出すので、range() 関数の引数がそのまま繰り返しの回数(ループ回数)となります。
# In[7] # ループ回数を数える count = 0 for x in range(100): count += 1 print("ループ回数は{}です".format(count)) # ループ回数は100です
最後に range()関数を使って「Python は楽しいな」を 3 回表示させてみましょう。
# In[8] # Pythonは楽しいな for x in range(3): print("Pythonは楽しいな") # Pythonは楽しいな # Pythonは楽しいな # Pythonは楽しいな
それでは皆さんも range() をフル活用して、Pythonプログラミングを楽しんでください。
コメント
Pythonのrangeクラスをを自作するとしたら、以下のようなコードになります。
興味のある人は上のコードを目で追ってアルゴリズムを確かめてください。