2016-04-09 10 views
0

私はPythonの32ビット版の32ビットマシンを使用しています。Pythonの制限された配列の長さを解決するには

私は大規模な配列をしようと、私の配列の長さが5592406あるとき、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "/root/PycharmProjects/stackidiots/main.py", line 3, in <module> 
    dd [x] = x 
IndexError: list assignment index out of range 

それはPythonの限界であるか、私は自分のコードに何かを得ましたか。 ここに私のコードです:

dd = [] 
for x in range(5592406): 
    dd [x] = x 

この問題を解決するには?私が64ビットに切り替えるとそれは大きくなることがありますか?

+0

*私のコードで何か問題がある*は、非特定です。あなたの質問に完全なエラーメッセージを貼り付けてください。 –

+0

*何のエラーがありますか?スタックトレースを含む完全なエラーメッセージを表示します。投稿したコードが文字通り実行したものであれば、エラーには32ビット、Pythonの制限、または番号5592406は関係ありません。存在しないリスト項目に割り当てようとしています。 – user2357112

答えて

3

いいえではない Pythonの能力に限界があります。

代わりに、コードに誤りがあります。

あなたはあなたのエラーが言うことがわかります:

IndexError: list assignment index out of range

リスト代入作品を注意してください。存在しないリストの指標にxを代入しようとしています。あなたがするときdd [x] = x

代わりに、ちょうどこれは動作しますが、それは面倒であり、より簡単にlist comprehensionで1行に行うことができますlist.append(value)

dd = [] 
for x in range(5592406): 
    dd.append(x) 

でリストにXを追加します。

dd = [x for x in range(5592406)] 
1

あなたの問題への最短解である:

dd = list(range(5592406)) 

これは、Pythonの2のために働くと3

エラーメッセージ:

IndexError: list assignment index out of range 

は、あなたが試すことを示しています(まだ)存在しないインデックスに割り当てる。 これは、32ビット版または64ビット版のPythonとは関係ありません。

関連する問題