2012-11-19 3 views
0

배열에서 원소를 취하여 2 차원 배열에 넣으려고 노력해 왔습니다. 그렇게 할 수있는 방법이 있는지 궁금합니다. 예를 들어Python에서 요소를 가져 와서 배열을 2 차원 배열에 넣는 것

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 다음과 같이 설정 하지 목록입니다. 물론 agetHeightgetWidth을 가지므로 단순한 목록이 아니므로 이미 처리 한 모든 유형의 객체를 가정합니다.


당신이 numpy를 사용하는 경우,이 거의 사소한된다 :

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

감사합니다. – user1721532

+0

행, 열 및 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

이것은 내가 중요하다고 생각하는'Grid' 객체를 OP로 얻지는 못합니다. 'Grid' 객체가 필요 없다면,이 솔루션을 지원합니다. – mgilson

관련 문제