Python从数组中获取元素并将它们放入2d数组中

时间:2012-11-19 14:57:33

标签: 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

2 个答案:

答案 0 :(得分:4)

我想我可能会这样做:

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

这假定您正确地声明了a。换句话说,a NOT 列表设置如下:

a = [[None]*ncol]*nrow

由于a会对相同的内部列表进行大量引用,因此无法正常工作。当然,您的a不是一个简单的列表,因为它有getHeightgetWidth,所以我假设它已经处理了任何类型的对象。


如果你正在使用numpy,这几乎变得微不足道了:

h = np.array(['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T'])
a = h.reshape((3,3)) 

答案 1 :(得分: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']]