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()関数が範囲型です。