1. ホーム
  2. python

NameError:名前 'xrange' が定義されていません。

2022-02-11 16:07:01
<パス

NameError:名前 'xrange' が定義されていません。

機械学習のK-meanクラスタリングアルゴリズムの他人のPython実装のソースコードを参照しながら、実行したところ、以下のエラーが発生しました。

Pythonのバージョンがpython 3.4で、xrange( )関数がpython 2.xの関数であるためです。 Python 3では、range( )はxrange( )関数と同様に実装されているので、特にxrange( )の問題はないようです。

  • はじめに: Python 3 でプログラムを実行したい場合、すべての xrange( ) 関数を range( ) に置き換えるだけです。
  • 2つ目:この問題のあるプログラムをpython 2.xに置いて実行するだけでよい

ここで、xrange( )の概要を説明します。

Python 2.x では、xrange() は反復可能なオブジェクトを作成するためによく使われます。通常は "for loop" または "list/set/dictionary derivation" の中で使われます。

この動作はジェネレータ(例:"inert valuation")に非常に似ていますが、ここでは xrange-iterable は無限であり、xrange を無限に反復することが可能であることを意味します。

xrange の "inertia" 特性のため、(例えば for ループで) 一度だけ反復する必要がある場合、通常 range() は xrange() よりも高速になります。しかし、range() は毎回メモリ上にリストを再生成するので、複数回の反復処理に使用することはお勧めしません。

Python 3 では range() は xrange() 関数と同じように実装されているので、専用の xrange() はありません (Python 3 で xrange() を使用すると NameError が発生します)。

python 2.x における xrange() と range() 関数の類似点と相違点については、以下を参照してください。 こちら