2012-11-19 60 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