【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オブジェクトの数字を合計する
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は楽しいな
それでは皆さんも Pythonプログラミングを楽しんでください。
【AI が range を対話形式で解説してくれました】
生徒: 先生、Pythonのrangeって何ですか?
先生: そうですね、rangeはPythonの組み込み関数の一つで、連続した整数のシーケンスを生成するために使います。例えば、range(5)と書くと、0から4までの整数を生成するシーケンスが作られます。
生徒: なるほど、つまり0から指定した数までの連続した整数を作れるんですね。
先生: そうです、その通りです。range関数の基本的な構文はrange(start, stop, step)です。startはシーケンスの開始値、stopは終了値(終了値は含まれない)、stepは値の増分を指定します。ただし、startとstepは省略可能で、省略するとデフォルト値が使われます。
生徒: なるほど、例えばrange(1, 10, 2)って書いたら、1から9までの奇数が作られますよね?
先生: その通りです!range(1, 10, 2)は1から9までの奇数のシーケンスを生成します。最初の数である1からスタートし、2ずつ増加していきます。ただし、終了値の10は含まれないので注意してください。
生徒: 分かりました!それから、rangeを使ったforループって良く聞きますが、具体的にどうやって使うんですか?
先生: いい質問です。range関数は主にforループと組み合わせて使われます。例えば、次のようなコードを考えてみましょう。
----------
for i in range(5):
print(i)
----------
このコードは0から4までの整数を順番に表示します。range(5)は0から4までの整数のシーケンスを生成し、forループで順番に取り出しています。
生徒: なるほど、だからiは0から4までの値を順番に取ってくるんですね。
先生: その通りです。forループの中でiはシーケンスから取り出した値を表します。このようにrangeを使うことで、繰り返し処理を行う際に便利に整数のシーケンスを生成することができます。
生徒: 分かりました!rangeの使い方も少しずつ理解できてきました。ありがとうございます、先生!
先生: どういたしまして!わからないことがあればいつでも聞いてくださいね。