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