Python2では、xrange()
という関数がありました。この関数は、引数に設定した値を元に連続した数のイテレータを返す関数でした。
for i in xrange(5):
print i
上記のように使用すると、0から4までの整数を順に出力します。
しかし、Python3からはxrange()
関数は使えなくなりました。その代わり、Python2のxrange()
関数の特徴を引き継いだrange()
関数が導入されました。
for i in range(5):
print(i)
Python3では上記のようにrange()
関数を使用して同様の処理を行います。
range()
関数とxrange()
関数の主な違いは、戻り値です。Python2のrange()
関数は繰り返し処理で繰り返す値が入ったリストを返します。一方、xrange()
関数はイテレータと呼ばれるxrangeオブジェクトを返します。
この違いは、ループ処理をした時のメモリ負荷を考えた時に重要になります。例えば、ループで1000000回といった大量のループをする際、range()
関数でループをしようとすると、まず最初に繰り返すためのリストを作成してしまいます。これではメモリに負荷をかけてしまいます。
それを解決するのが、xrange()
関数です。xrange()
関数はイテレータといって、次の要素にアクセスすることを繰り返すインターフェースを返しています。これにより、逐次処理ができるようになり、初めに膨大なメモリを確保しなくても良くなりました。
以上がPython2のxrange()
関数についての説明です。Pythonを学ぶ際には、使用するバージョンによって利用できる関数が異なることを覚えておきましょう。