以下のコードでforループの大きなイテレータに問題があります。数値を含む文字列リストを読み込んで浮動小数点数を生成します。Pythonオーバーフローエラー:iterインデックスが大きすぎます
def float_generator(tekstowe):
x = ''
for c in tekstowe:
if c != ' ':
x += c
else:
out = float(x)
x = ''
yield(out)
私は"はOverflowError:大きすぎITERインデックス" そうだを。私は本当に大きなiter数(検索されたファイルの何十億もの値のような)を使用しようとします。ループのためにiter範囲が何とか制限されていますか?
Python 2.7を使用64ビット。ありがとう。 tekstowe
のみ__getitem__
なく、__iter__
を実装する配列型であるので、それは等0と__getitem__
、次いで、1、2、3、呼び出しPythonのイテレータラッパーを使用しているよう__getitem__
はIndexError
を上げるまで
「float(x)」の大きさはどれくらいですか? –
これらは0〜255の値で、このように少しランダムに見えます: 25.75000000 0.340 22.33333397 0.667。これらは4つの例のフロートです。 –
答えはhttps://github.com/python/cpython/blob/efac0438f42e03f0ece269ac8f1616bc6dc2d8bd/Objects/iterobject.c#L57です。ここではhttps://docs.python.org/2/c-api/long.html# c.PyLong_AsSsize_t –