티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How to define a two-dimensional array?

2차원 배열을 정의하는 방법은?

 문제 내용 

I want to define a two-dimensional array without an initialized length like this:

다음과 같이 초기화된 길이 없이 2차원 배열을 정의하고자 합니다.
Matrix = [][]

 

But this gives an error:

그러나 다음과 같은 오류가 발생합니다.

 

IndexError: list index out of range

 

 

 높은 점수를 받은 Solution 

You're technically trying to index an uninitialized array. You have to first initialize the outer list with lists before adding items; Python calls this "list comprehension".

당신은 기술적으로 초기화되지 않은 배열을 인덱싱하려고 합니다. 항목을 추가하기 전에 먼저 리스트로 외부 리스트를 초기화해야 합니다. Python은 이것을 리스트 내포라고 합니다.
# Creates a list containing 5 lists, each of 8 items, all set to 0
w, h = 8, 5
Matrix = [[0 for x in range(w)] for y in range(h)] 

 

#You can now add items to the list:

#이제 리스트에 항목을 추가할 수 있습니다.
Matrix[0][0] = 1
Matrix[6][0] = 3 # error! range... 
Matrix[0][6] = 3 # valid

 

Note that the matrix is "y" address major, in other words, the "y index" comes before the "x index".

매트릭스는 "y"가 주소의 메이저입니다. 즉, "y 인덱스"는 "x 인덱스" 앞에 옵니다.
print Matrix[0][0] # prints 1
x, y = 0, 6 
print Matrix[x][y] # prints 3; be careful with indexing! 

 

Although you can name them as you wish, I look at it this way to avoid some confusion that could arise with the indexing, if you use "x" for both the inner and outer lists, and want a non-square Matrix.

이름을 원하는 대로 지정할 수 있지만, 내부 및 외부 목록에 모두 "x"를 사용하고 정사각형이 아닌 행렬을 원할 경우 인덱싱과 관련하여 발생할 수 있는 혼동을 피하기 위해 이 방법을 사용합니다.

 

 

 

 가장 최근 달린 Solution 

You can create an empty two dimensional list by nesting two or more square bracing or third bracket ([], separated by comma) with a square bracing, just like below:

아래와 같이 두 개 이상의 사각 괄호 또는 세 번째 괄호([, 쉼표로 구분)를 사각 괄호로 묶어서 빈 2차원 리스트를 만들 수 있습니다.
Matrix = [[], []]

 

Now suppose you want to append 1 to Matrix[0][0] then you type:

이제 Matrix[0][0]에 1을 추가하고 싶다고 가정하고 다음을 입력합니다.
Matrix[0].append(1)

 

Now, type Matrix and hit Enter. The output will be:

이제 행렬을 입력하고 Enter를 누릅니다. 출력은 다음과 같습니다.
[[1], []]

 

If you entered the following statement instead

대신 다음 문을 입력한 경우
Matrix[1].append(1)

 

then the Matrix would be

그렇다면 매트릭스는
[[], [1]]

 

 

출처 : https://stackoverflow.com/questions/6667201/how-to-define-a-two-dimensional-array

반응형
댓글
공지사항
최근에 올라온 글