我對python很陌生。python bignum數組?
我想有一個正好有10000個大整數的數組(任意精度)。
我試圖做這樣的:
M = []
M[0] = 1
M[1] = 1
for k in range(2,10001):
M[k] = ...
,但我得到:
IndexError: list assignment index out of range
我應該使用什麼數據結構以及如何對其進行初始化,並預留空間呢?
我對python很陌生。python bignum數組?
我想有一個正好有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
替換你想要的任何默認值(或之後用正確的值覆蓋它)。
在這裏仔細地扔''數組''。我會說「這會給你一個正確大小的*列表*」。我也會解釋一下,在python中,「數組」有些不同,正確的術語是「list」。 (這可以幫助您瞭解何時使用Google)。 – mgilson 2012-08-03 15:55:34
預留空間:
M = [0] * 10000
則可以使用:
M [0] = 1 M [1] = 1
對於k在範圍(2,10001 ): M [k] = ...
與JavaScript不同,如果數組元素不存在,則不能通過索引分配數組元素。我建議你就追加到數組:
M = []
for k in range(1,10001):
M.append(k)
如果密鑰是很重要的,你需要arbitrarially創建它們,使用dict
:
M = {}
for k in range(1,10001):
M[k] = ...
要大陣列工作,你可以考慮使用Numpy作爲數字計算和高效存儲和操作大型數組的軟件包。你可以做這樣的事情:
import numpy as np
M = np.arange(10000)
M[:2] = 1
停留在純Python的一面,我會做:用IPython的
M = list(xrange(10000))
M[0] = 1
M[1] = 1
計時(建議報告命令行解釋與蟒蛇玩):
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
代碼
m = [];
m.append(1);
m.append(2);
m。追加(3);
對於k在範圍(2,1000):
m.append(k);
打印(米);
面向對象這一個將很好的追加和刪除 adv:操作簡單,使用方便,靈活性高。
下面的答案是正確的,但應該指出的是,這樣做並不常見。只需在需要的時候列出清單,或者當您有可用的數據時,就可以將其放入。 – Julian 2012-08-03 15:42:26