xrangeオブジェクト


ビルトイン関数にrange関数とxrange関数がありますが、range関数がリストを返すのに対して、xrange関数はxrangeオブジェクトを返します。試しに

print range(1, 10)

print xrange(1, 10)

を実行するとそれぞれ次のようになります。

>>> print xrange(1, 10)
xrange(1, 10)
>>> print range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

rangeもxrangeも使う場面は同じですが、rangeはリストであるためリソースをそれだけ消費することになります。一方、xrangeは範囲であるため、リソースの消費がありません。したがって、範囲が大きい場合(例えば0〜10000)は、xrangeオブジェクトを使います。xrangeオブジェクトは、tolist()メソッドによってリストに変換することができます。

x = xrange(0, 100)  # ビルトイン関数
list1 = x.tolist()