#연구/#Python

파이썬 리스트를 이용한 2차원 배열 만들기

every7hing 2021. 5. 20. 13:26
반응형

 

#파이썬 리스트를 이용한 2차원 배열 만들기

#파이썬 2차원 배열

#파이썬 2차원 배열 만들기

 

파이썬을 통해 2차원 배열을 만들고 싶을 때는 어떻게 할까요? 보통 외부 패키지를 이용한 방법을 많이 사용합니다. numpy와 같이 것들 말이죠. 하지만 어떤 이유로 외부 패키지를 이용하지 않고, 2차원 배열을 만들려고 한다면 어떻게 해야 할까요?

 

사실 아주 간단합니다. 지금부터 그 방법에 대해서 확인하시죠!

 

 

파이썬 리스트를 이용한 2차원 배열 만들기

 

파이썬의 리스트를 통해 2치원 배열을 만들 수 있습니다.

가장 일반적이고 간단한 방법은 아래 코드와 같습니다.

row = 4
column = 5
arr = [[0] * column] * row
print(arr)

 

값이 0으로 채워진 4x5 행렬이 완성됩니다.

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

 

그렇지만, 이 방법을 쓰면 문제가 하나 생깁니다.

먼저 아래 코드를 한번 보시죠.

arr[0][0] = 2
print(arr)

 

0행의 첫 번째 값을 2로 변경을 시도했지만, 그 결과는 다음과 같습니다.

[[2, 0, 0, 0, 0], [2, 0, 0, 0, 0], [2, 0, 0, 0, 0], [2, 0, 0, 0, 0]]

 

0행의 값만 바뀌는 것이 아니라, 1, 2, 3행의 첫 번째 값이 모두 2로 변경되었습니다.

왜 그럴까요? 아래 코드를 다시 한 번 살펴봅시다.

[0] * column

 

사실 파이썬에서 리스트는 리스트 자체가 복사되지 않고 기본적으로 참조되도록 되어있습니다.

따라서, 위 코드가 실행되면서 참조가 반환되고, 반환된 참조를 [[0] * column] * row하게 되면 같은 참조들이 중복되어 생성되게 되는 것이죠.

따라서, 올바른 값을 얻기 위한 방법은 [0] * column 자체를 리스트에 row만큼 append하는 것이죠.

코드로 표현하면 아래와 같습니다.

row = 4
column = 5
arr2 = []
for _ in range(row):
  arr2.append([0] * column)
  
print(arr2)

 

생성된 결과는 당연히, 2차원 배열과 같습니다.

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

 

그러면, 이렇게 생성된 2차원 배열의 0행의 값을 2로 변경하는 것을 위와 동일하게 진행 해보겠습니다.

arr2[0][0] = 2
print(arr2)

 

과연 결과는 어떨까요?

[[2, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

 

자 어떤가요? 우리가 원하는 것 처럼 0행의 첫 번째 값만 2로 변경이 되었습니다. 파이썬에서 리스트를 복사할 때는 항상 기억하시기 바랍니다.

그리고 위에서 보여드린 append 방식을 좀 더 간소화하여 코드를 작성할 수 있는데요. 그 코드를 아래에 공유하면서 오늘 글 마치겠습니다.

 

파이썬 2차원 배열 생성 간단 코드

row = 4
column = 5
arr3 = [[0] * column for _ in range(row)]
print(arr3)
[ 다른 글 더 보러 가기 ]

그 밖에도 다양하고 유익한 정보들을 공유하고 있습니다.

2021.05.20 - [#연구/#Python] - 윈도우(Windows 10) 파이썬 Path 설정 1분만에 해결하기!

2021.05.11 - [#연구/#C] - C언어 while 반복문 for문으로 바꿔보기 #while을 for문으로 바꾸는 방법

2021.01.24 - [#연구/#Python] - [파이썬/Python] 파일에서 특정 문자열이 사용된 개수 세어보기 #파일에서 문자열 개수 파악하는 함수

2020.12.21 - [#연구/#Python] - [파이썬/Python] 파이썬으로 Zip 파일 풀기 #파이썬으로 압축파일 풀기 #Extract Zip File in Python #ZipFile

 

반응형