Pythonでのrangeとxrangeの違い



Difference Between Range



Range([start、] stop [、step])は、startとstopで指定された範囲と、stepで設定されたステップサイズに従ってシーケンスを生成します。

>>> range(5) [0, 1, 2, 3, 4] >>> range(1,5) [1, 2, 3, 4] >>> range(0,6,2) [0, 2, 4]

xrange 使用法は範囲とまったく同じですが、リストオブジェクトを生成する代わりに、ジェネレーターである点が異なります。



>>> xrange(5) xrange(5) >>> list(xrange(5)) [0, 1, 2, 3, 4] >>> xrange(1,5) xrange(1, 5) >>> list(xrange(1,5)) [1, 2, 3, 4] >>> xrange(0,6,2) xrange(0, 6, 2) >>> list(xrange(0,6,2)) [0, 2, 4]

上記の例からわかるように、多数のシーケンスを生成する場合、大きなメモリスペースを開く必要がないため、xrangeを使用する方が範囲のパフォーマンスよりもはるかに優れています。

注意:



Python3は、xrange()関数をキャンセルし、range()およびrange()とマージします。

xrange()が呼び出されると、python3環境はxrangeが定義されていないことを要求します。 range()関数のタイプも変更されました。 2.7ではリスト型ですが、3.7ではrange()関数が範囲型です。