0

私はPythonを初めて使用します。

正確に10000個の大きな整数(任意精度)の配列が必要です。

私はこのようにそれをやろうとしました:

M = []

M[0] = 1
M[1] = 1

for k in range(2,10001):
        M[k] = ...

しかし、私は得る:

IndexError: list assignment index out of range

どのデータ構造を使用する必要があり、どのように初期化してスペースを予約するのですか?

4

5 に答える 5

3

リストが正しく初期化されていません。

試してみてくださいM = [0]*10000。これにより、正しいサイズのリストが表示されます。を必要なデフォルトに置き換えるだけ0です(または後で正しい値で上書きします)。

于 2012-08-03T15:38:54.610 に答える
3

JavaScript とは異なり、配列要素が存在しない場合、インデックスによって配列要素を割り当てることはできません。単に配列に追加することをお勧めします:

M = []
for k in range(1,10001):
    M.append(k)

キーが重要であり、それらを任意に作成する必要がある場合は、次を使用しますdict

M = {}
for k in range(1,10001):
    M[k] = ...
于 2012-08-03T15:40:50.240 に答える
0

スペースを予約するには:

M = [0] * 10000

その後、次を使用できます。

M[0] = 1 M[1] = 1

範囲内の k (2,10001): M[k] = ...

于 2012-08-03T15:40:15.607 に答える
0

コード

m=[ ];

m.append(1);

m.append(2);

m.append(3);

範囲内の k の場合 (2,1000):

    m.append(k);

プリント (m);

オブジェクト指向の場合、これは adv の追加と削除に適しています。操作が簡単で、使い方が簡単で、柔軟性が高いです。

于 2012-08-03T18:09:53.977 に答える
0

大きな配列を操作するには、 Numpyをパッケージとして使用して、数値計算と効率的なストレージと大きな配列の操作を検討することができます。次のようなことができます:

import numpy as np

M = np.arange(10000)
M[:2] = 1

純粋な python 側にとどまるには、次のようにします。

M = list(xrange(10000))
M[0] = 1
M[1] = 1

IPython を使用したタイミング (Python で遊ぶための推奨コマンド ライン インタープリター):

In [1]: %timeit M = list(range(10000))
10000 loops, best of 3: 195 us per loop

In [2]: %timeit M = list(xrange(10000))
10000 loops, best of 3: 190 us per loop

In [3]: %timeit M = np.arange(10000)
100000 loops, best of 3: 9.74 us per loop
于 2012-08-03T15:56:43.247 に答える