2010-01-12 2 views
2

내 배열의 최대 크기는 2x27 일 수 있지만 열의 수가 27.Number보다 낮을 수 있습니다. 몇 가지 조건에 따라 열의 수가 달라질 수 있습니다. 배열 2x27을 초기화 한 다음 불필요한 열을 삭제하거나 더 좋은 방법으로이 작업을 수행 할 수있는 좋은 방법입니까? 그래서 몇 가지 요소에 대한파이썬에서 2 차원 배열을 만드는 방법 행의 수를 알고 있고 열의 수는 조건에 따라 다릅니 까?

+0

다음은 작동하지 않는 기능입니다. 인터프리터에서는 합리적인 것처럼 보이지만 별도의 메모리가있는 별도의 객체 대신 동일한 객체를 참조합니다. 'my_2d_array = [[ "x"] * COLS] * ROWS' – jpsimons

답변

1

키로 튜플로, 사전을 사용

dct = {} 
dct[(0,0)] = 'X' 
if (10,10) in dct: 
    dct[(10,10)] += 1 
else: 
    dct[(10,10] = 0 
# Deleting a row/column 
dct.pop((10,0)) 
dct.pop((10,1)) 
... 
dct.pop((10,10)) 

사전은 매우 유연합니다.

또는 numpy 배열을 사용하십시오.

0

Numpy Array에 대해 link을 확인하십시오. 이 페이지에는 몇 가지 간단한 사용 예가 있습니다. - 당신이 필요 구축

num_rows, num_cols = 2, 27 
table = [] 

for r in range(num_rows): 
    row = [] 
    table.append(row) 
    for c in range(num_cols): 
     row.append(c) 

print table 
1

는 여기를 처리하는 간단한 방법입니다. "2 차원 어레이"로 가정하면 실제로 "목록 목록"을 의미합니다.

def makarray(value, nrows, ncols): 
    return [[value]*ncols for _ in range(nrows)] 
+0

나쁜 소년을 키우거나 키울 필요가 없다면 나쁘지 않습니다. 정말로 모든 것은 묻는 사람이하려고하는 것에 달려있다. –

3

아니, 그 다음 더 큰 배열을 구축 그것의 일부를 제거하는 특별한 의미가 없습니다 :

+0

좋아, 나는 지금 바보 같은 느낌이 든다 :) 또한, 너는 nrows와 ncols를 거꾸로 들여 놓은 것 같아 ... –

+0

@Jesse, 너는 cols/rows에 대해 옳아. 너는 Fortran에서 그 사람을 데려 갈 수 있다고 생각해.하지만 너는 할 수있어. 포트란을 그 사람에게서 빼 먹지 마라!) - 지금 편집 중입니다. –

관련 문제