2012-11-19 62 views
0

我一直試圖從數組中取元素並將它們放入一個2d數組中,我在想是否有辦法做到這一點?Python將數組和元素放入數組並將其放入一個二維數組

例如

h = ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T'] 
a = Grid(3,3) #creates empty 2d array 

輸出將

H H H 
H H H 
H H T 

我在做一些喜歡這一點。

for row in range(a.getHeight()): 
    for col in range(a.getWidth(): 
     for i in range(len(h): 
      a[row][col] = h[i] 

,但我得到這樣的輸出:

T T T 
T T T 
T T T 

回答

4

我想我可能會做這樣的事情:

hh = iter(h) 
for row in range(a.getHeight()): 
    for col in range(a.getWidth()): 
     a[row][col] = next(hh) 

這是假設你聲明a正常。換句話說,a設置如下列表:

a = [[None]*ncol]*nrow 

,由於a不起作用將舉行一堆引用到同一內部列表。當然,你的a不是一個簡單的列表,因爲它有getHeightgetWidth,所以我假設它已經處理了它的任何類型的對象。


如果您使用numpy,這成爲幾乎微不足道:

​​
+0

感謝那些工作。 – user1721532

+0

我的網格使用一個接受值rows,columns和fillValue的類來設置。 self._data = Array(rows) – user1721532

2

使用列表理解:

In [11]: h = ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T'] 

In [12]: [h[i:i+3] for i in range(0,len(h),3)] 
Out[12]: [['H', 'H', 'H'], ['H', 'H', 'H'], ['H', 'H', 'T']] 
+0

這不會讓OP成爲一個我認爲很重要的Grid對象。如果一個'Grid'對象不是必需的,那麼我支持這個解決方案。 – mgilson