私はPythonを初めて使用します。
正確に10000個の大きな整数(任意精度)の配列が必要です。
私はこのようにそれをやろうとしました:
M = []
M[0] = 1
M[1] = 1
for k in range(2,10001):
M[k] = ...
しかし、私は得る:
IndexError: list assignment index out of range
どのデータ構造を使用する必要があり、どのように初期化してスペースを予約するのですか?
私はPythonを初めて使用します。
正確に10000個の大きな整数(任意精度)の配列が必要です。
私はこのようにそれをやろうとしました:
M = []
M[0] = 1
M[1] = 1
for k in range(2,10001):
M[k] = ...
しかし、私は得る:
IndexError: list assignment index out of range
どのデータ構造を使用する必要があり、どのように初期化してスペースを予約するのですか?
リストが正しく初期化されていません。
試してみてくださいM = [0]*10000。これにより、正しいサイズのリストが表示されます。を必要なデフォルトに置き換えるだけ0です(または後で正しい値で上書きします)。
JavaScript とは異なり、配列要素が存在しない場合、インデックスによって配列要素を割り当てることはできません。単に配列に追加することをお勧めします:
M = []
for k in range(1,10001):
M.append(k)
キーが重要であり、それらを任意に作成する必要がある場合は、次を使用しますdict。
M = {}
for k in range(1,10001):
M[k] = ...
スペースを予約するには:
M = [0] * 10000
その後、次を使用できます。
M[0] = 1 M[1] = 1
範囲内の k (2,10001): M[k] = ...
コード
m=[ ];
m.append(1);
m.append(2);
m.append(3);
範囲内の k の場合 (2,1000):
m.append(k);
プリント (m);
オブジェクト指向の場合、これは adv の追加と削除に適しています。操作が簡単で、使い方が簡単で、柔軟性が高いです。
大きな配列を操作するには、 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