私は最近python 3。
In python 2range()
関数を使用して、リスト要素を割り当てることができます。
_>>> A = []
>>> A = range(0,6)
>>> print A
[0, 1, 2, 3, 4, 5]
_
pythonのようにrange()
関数が使用されている場合、これが発生しています
_>>> A = []
>>> A = range(0,6)
>>> print(A)
range(0, 6)
_
なんでこんなことが起こっているの?
なぜpythonこの変更を行うのですか?
それは恩恵ですか、それとも悩みですか?
Python 3は、イテレータを使用しますpython 2used lists。 docs は、range
への変更を含む詳細な説明を提供します。
利点は、Python 3が大きな範囲の反復子またはマッピングを使用している場合、メモリを割り当てる必要がないことです。例えば
for i in range(1000000000): print(i)
python 3.で必要なメモリがはるかに少なくなります。たまたまPython
list_of_range = list(range(10))
python 2では、range
は組み込み関数です。以下は 公式python docs からのものです。リストを返します。
range(stop)
range(start、stop [、step])
これは、算術級数を含むリストを作成するための汎用機能です。ほとんどの場合、forループで使用されます。
また、 xrange
python 2にのみ存在することを確認することもできます。これは、主に高速反復のためにxrange
オブジェクトを返します。
xrange(停止)
xrange(start、stop [、step])
この関数はrange()に非常に似ていますが、リストの代わりにxrangeオブジェクトを返します。
ちなみに、python 3はこれら2つを1つのrange
データ型にマージし、python 2.のxrange
と同様に機能します。 ドキュメント をチェックします。
Python 3 range()
関数は、python 2 xrange()
function not range()
と同等です]
説明
In python 3ほとんどの関数は、メモリを節約するためにpython 2のようにリストではないIterableオブジェクトを返します。これらのいくつかはZip()
filter()
map()
を含む.keys .values .items()
辞書メソッドしかし、反復可能なオブジェクトは、何度も反復しようとすると効率的ではないため、list()
メソッドを使用してそれらをリストに変換できます