我一直在尝试从数组中获取元素并将它们放入二维数组中,我想知道是否有办法做到这一点?
例如
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
答案 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
不是一个简单的列表,因为它有getHeight
和getWidth
,所以我假设它已经处理了任何类型的对象。
如果你正在使用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']]