1324 words
7 minutes
2차원 리스트 다루기

안녕하세요, 여러분! 오늘은 파이썬에서 매우 유용하게 사용되는 ‘2차원 리스트’에 대해 알아보려고 합니다. 2차원 리스트는 말 그대로 리스트 안에 리스트가 있는 구조를 말하는데요, 마치 엑셀 시트나 게임의 체스판처럼 행과 열로 데이터를 표현할 수 있어 많은 상황에서 유용하게 사용됩니다.

처음 들으면 조금 복잡하게 느껴질 수 있지만, 걱정 마세요. 차근차근 설명해 드리겠습니다.

먼저, 2차원 리스트가 어떻게 생겼는지 그림으로 한번 살펴볼까요?

2차원 리스트123456789

이 그림에서 볼 수 있듯이, 2차원 리스트는 ‘리스트들의 리스트’입니다. 바깥쪽 큰 상자가 메인 리스트를 나타내고, 그 안의 파란 상자들이 각각의 내부 리스트를 나타냅니다. 그리고 각 내부 리스트는 여러 개의 요소를 가지고 있죠.

이제 파이썬에서 어떻게 2차원 리스트를 만들고 다루는지 살펴보겠습니다.

  1. 2차원 리스트 생성하기
# 직접 값을 나열하여 생성
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 리스트 컴프리헨션을 사용하여 생성
n = 3  # 행과 열의 개수
matrix = [[0 for _ in range(n)] for _ in range(n)]

print(matrix)

위 코드에서 볼 수 있듯이, 2차원 리스트를 만드는 방법은 여러 가지가 있습니다. 직접 값을 나열할 수도 있고, 리스트 컴프리헨션을 사용하여 동적으로 생성할 수도 있어요.

  1. 2차원 리스트 접근하기

2차원 리스트의 특정 요소에 접근하려면 어떻게 해야 할까요? 인덱스를 두 번 사용하면 됩니다.

# 직접 값을 나열하여 생성
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 리스트 컴프리헨션을 사용하여 생성
n = 3  # 행과 열의 개수
matrix = [[0 for _ in range(n)] for _ in range(n)]

print(matrix)

# 특정 요소에 접근하기
print(matrix[1][2])  # 2행 3열의 요소 출력
matrix[0][1] = 10    # 1행 2열의 요소를 10으로 변경

# 행 전체에 접근하기
print(matrix[1])  # 2번째 행 전체 출력

matrix[1][2]는 2행 3열의 요소를 가리킵니다. 첫 번째 인덱스는 행을, 두 번째 인덱스는 열을 나타내죠. 파이썬에서는 인덱스가 0부터 시작한다는 점을 기억해 주세요!

  1. 2차원 리스트 순회하기

2차원 리스트의 모든 요소를 순회하려면 어떻게 해야 할까요? 이중 for 문을 사용하면 됩니다.

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

# 모든 요소 출력하기
for row in matrix:
    for element in row:
        print(element, end=' ')
    print()  # 줄 바꿈

# 인덱스와 함께 출력하기
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        print(f"matrix[{i}][{j}] = {matrix[i][j]}")

이렇게 이중 for 문을 사용하면 2차원 리스트의 모든 요소를 쉽게 순회할 수 있습니다.

2차원 리스트는 실제로 많은 알고리즘 문제에서 활용됩니다. 예를 들어, 게임 보드를 표현하거나, 이미지 처리를 할 때, 또는 그래프 알고리즘을 구현할 때 자주 사용되죠.

여러분, 이제 2차원 리스트에 대해 어느 정도 이해가 되셨나요? 처음에는 조금 복잡해 보일 수 있지만, 실제로 사용해보면 매우 직관적이고 유용하다는 것을 느끼실 수 있을 거예요.

연습 삼아 간단한 게임 보드를 2차원 리스트로 만들어보는 건 어떨까요? 예를 들어, 3x3 틱택토 게임 보드를 만들고, ‘X’와 ‘O’를 번갈아 놓아보세요. 이런 식으로 실제 상황에 적용해보면 2차원 리스트의 활용법을 더 잘 이해할 수 있을 거예요.

2차원 리스트는 파이썬 프로그래밍에서 매우 중요한 개념입니다. 이를 잘 이해하고 활용하면 복잡한 데이터 구조도 쉽게 다룰 수 있게 될 거예요. 앞으로 코딩을 하실 때 2차원 리스트의 활용 기회를 찾아보세요. 여러분의 프로그래밍 실력이 한 단계 더 업그레이드될 거예요!

2차원 리스트 다루기
https://kimjinwoo.me/posts/20240721-algorithm-8/
Author
Jinwoo Kim
Published at
2024-07-21