[Python]다차원 리스트(Multi-dimensional List)

nongnola·2024년 7월 1일

Python

목록 보기
7/17

다차원 리스트란?

파이썬에서 다차원 리스트는 리스트 안에 또 다른 리스트를 포함하는 구조를 말합니다. 1차원 리스트가 단일 행의 데이터를 저장하는 것처럼, 다차원 리스트는 여러 행과 열의 데이터를 저장할 수 있습니다. 예를 들어, 2차원 리스트는 행과 열로 이루어진 표 형태의 데이터를 저장하는 데 사용됩니다.


다차원 리스트를 사용하는 이유

다차원 리스트는 여러 가지 이유로 유용합니다. 가장 큰 이유는 데이터를 더 구조적으로 저장하고 처리할 수 있기 때문입니다. 예를 들어, 표 형식의 데이터를 다룰 때는 2차원 리스트가 매우 적합합니다. 또한, 이미지 데이터와 같이 3차원 또는 그 이상의 차원을 가진 데이터를 처리할 때도 다차원 리스트를 사용하면 편리합니다.


다차원 리스트의 사용법

다차원 리스트를 생성하고 사용하는 방법은 다음과 같습니다:

  1. 생성하기: 다차원 리스트는 리스트 안에 리스트를 포함하여 생성합니다.

  2. 접근하기: 다차원 리스트의 요소에 접근하려면 인덱스를 두 번 사용합니다.

  3. 수정하기: 특정 위치의 값을 수정할 수 있습니다.

  4. 반복문 사용하기: 중첩된 반복문을 사용하여 다차원 리스트의 요소를 순회할 수 있습니다.

생성하기

# 2차원 리스트 생성
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matrix)

접근하기

# 첫 번째 행, 두 번째 열의 값에 접근
value = matrix[0][1]
print(value)  # 출력: 2

수정하기

# 두 번째 행, 세 번째 열의 값을 10으로 수정
matrix[1][2] = 10
print(matrix)

반복문 사용하기

# 모든 요소를 출력
for row in matrix:
    for element in row:
        print(element, end=" ")
    print()

다차원 리스트 예시

다차원 리스트는 여러 가지 상황에서 사용될 수 있습니다. 몇 가지 예를 들어보겠습니다:

  1. 행렬 연산: 수학에서 행렬을 다룰 때 다차원 리스트를 사용합니다.

  2. 이미지 처리: 이미지 데이터를 저장하고 처리할 때 각 픽셀 값을 다차원 리스트로 저장합니다.

  3. 게임 개발: 체스판이나 바둑판과 같은 게임 보드를 구현할 때 유용합니다.

행렬 연산 예시

# 두 행렬의 덧셈
matrix1 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

matrix2 = [
    [9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]
]

result = [
    [matrix1[i][j] + matrix2[i][j] for j in range(len(matrix1[0]))]
    for i in range(len(matrix1))
]

print(result)

다차원 리스트를 사용할 때 주의할 점

다차원 리스트를 사용할 때는 몇 가지 주의할 점이 있습니다:

  1. 인덱스 범위: 리스트의 인덱스 범위를 벗어나지 않도록 주의해야 합니다. 그렇지 않으면 IndexError가 발생할 수 있습니다.

  2. 깊은 복사와 얕은 복사: 리스트를 복사할 때는 얕은 복사와 깊은 복사의 차이를 이해하고 사용해야 합니다. 얕은 복사는 리스트의 참조만 복사하고, 깊은 복사는 리스트의 모든 요소를 새롭게 복사합니다.

  3. 성능: 다차원 리스트는 많은 데이터를 저장할 수 있지만, 너무 많은 데이터를 다룰 때는 성능에 영향을 줄 수 있습니다. 필요한 경우 NumPy와 같은 라이브러리를 사용하는 것이 좋습니다.

얕은 복사와 깊은 복사 예시

import copy

# 얕은 복사
original = [[1, 2, 3], [4, 5, 6]]
shallow_copy = original.copy()

# 깊은 복사
deep_copy = copy.deepcopy(original)

# 수정해보기
original[0][0] = 9

print("Original:", original)
print("Shallow Copy:", shallow_copy)
print("Deep Copy:", deep_copy)

위의 예시에서, 얕은 복사한 리스트는 원본 리스트의 변경에 영향을 받지만, 깊은 복사한 리스트는 영향을 받지 않습니다.

이와 같이, 다차원 리스트는 매우 유용하지만, 주의해서 사용해야 합니다. 다양한 예제와 함께 다차원 리스트를 잘 활용하여 복잡한 데이터 구조를 효율적으로 다뤄보세요.

0개의 댓글