본문 바로가기
Python 코딩도장

파이썬 코딩도장 Unit 23 정리(1) - 2차원 리스트 생성 후 요소에 접근하기

by chanfficial 2022. 1. 24.

Unit 23 

2차원 리스트 사용하기

  • 2차원 리스트는 가로 X 세로 형태로 이루어져 있으며 행(row)과 열(column)모두 0부터 시작한다.

1. 2차원 리스트를 만들고 요소에 접근하기

  • 2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 안쪽의 각 리스트는 ,(콤마)로 구분한다.
    # 리스트 = [[값, 값], [값, 값], [값, 값]]
    >>> a = [[10, 20], [30, 40], [50, 60]]
    >>> a
    [[10, 20], [30, 40], [50, 60]]​
    
    # 세로로 입력
    a = [[10, 20], 
         [30, 40], 
         [50, 60]]​
    - 가로 2, 세로 3의 2차원 리스트가 만들어 졌다. 리스트를 생성할 때는 보기 편하게 세 줄로 입력해도 된다.

1-1. 2차원 리스트의 요소에 접근하기

  • 2차원 리스트의 요소에 접근하거나 값을 할당할 때는 리스트 뒤에 [ ](대괄호)를 두 번 사용하며 [ ] 안에 세로 인덱스와 가로 인덱스를 지정해주면 된다.
    리스트[세로인덱스][가로인덱스]
    리스트[세로인덱스][가로인덱스] = 값​
    >>> a = [[10, 20], [30, 40], [50, 60]]
    >>> a[0] [0]            # 세로 인덱스 0, 가로 인덱스 0인 요소 출력
    10
    >>> a[1][1]           # 세로 인덱스 1, 가로 인덱스 1인 요소 출력
    40
    >>> a[2][1]           # 세로 인덱스 2, 가로 인덱스 0인 요소 출력
    60
    >>> a[0][1] = 1000    # 세로 인덱스 0, 가로 인덱스 1인 요소에 값 할당
    >>> a[0][1]
    1000​

 

 

※ 참고

 

1. 톱니형 리스트

  • 파이썬에서는 가로 크기가 불규칙한 톱니형 리스트(jagged list)를 만들 수 있다.
    a = [[10, 20],
         [500, 600, 700],
         [9],
         [30, 40],
         [8],
         [800, 900, 1000]]​
  • 리스트 a는 가로 크기(행의 요소 개수)가 제각각인데, 이런 리스트는 요소가 배치된 모양이 톱니처럼 생겼다고 하여 톱니형 리스트라고 부른다.
  • 톱니형 리스트는 apeend 메서드 등을 사용하여 동적으로 생성할 수도 있다.
    >>> a = []
    >>> a.append([])
    >>> a[0].append(10)
    >>> a[0].append(20)
    >>> a.append([])
    >>> a[1].append(500)
    >>> a[1].append(600)
    >>> a[1].append(700)
    >>> a
    [[10, 20], [500, 600, 700]]​

2. 2차원 튜플 

  • 리스트와 마찬가지로 2차원 튜플도 생성할 수 있고 아래와 같은 방식 등이 가능하다.
    튜플 = ((값, 값), (값, 값), (값, 값)) # 튜플 안에 튜플을 넣는 방식
    튜플 = ([값, 값], [값, 값], [값, 값]) # 튜플 안에 리스트를 넣는 방식
    리스트 = [(값, 값), (값, 값), (값, 값)] # 리스트 안에 튜플을 넣는 방식​
    a = ((10, 20), (30, 40), (50, 60)) # 튜플 안에 튜플을 넣은 2차원 튜플
    b = ([10, 20], [30, 40], [50, 60]) # 튜플 안에 리스트를 넣음
    c = [(10, 20), (30, 40), (50, 60)] # 리스트 안에 튜플을 넣음​
  • 튜플은 내용을 변경할 수 없어서 a는 안쪽과 바깥쪽 모두 요소를 변경할 수 없는데 b는 안쪽 리스트만 요소를 변경할 수 있고, c는 바깥쪽 리스트만 요소를 변경할 수 있다.
    a[0][0] = 500      # 안쪽 튜플은 변경할 수 없음. TypeError 발생
    a[0] = (500, 600)  # 바깥쪽 튜플은 변경할 수 없음. TypeError 발생
    b[0][0] = 500      # 안쪽 리스트는 변경할 수 있음
    b[0] = (500, 600)  # 바깥쪽 튜플은 변경할 수 없음. TypeError 발생
    c[0][0] = 500      # 안쪽 튜플은 변경할 수 없음. TypeError 발생
    c[0] = (500, 600)  # 바깥쪽 리스트는 변경할 수 있음​

3. 알아보기 쉽게 출력하기

  • 2차원 리스트를 출력하면 한 줄로 쭉 붙어서 출력된다.
    >>> a = [[10, 20], [30, 40], [50, 60]]
    >>> a
    [[10, 20], [30, 40], [50, 60]]​
  • 만약 2차원 리스트의 사각형 구조를 유지하도록 출력하려면 pprint 모듈의 pprint 함수를 사용하면 된다.
    >>> from pprint import pprint
    >>> pprint(a, indent=4, width=20)
    [   [10, 20],
        [30, 40],
        [50, 60]]​
    - indent는 들여쓰기 칸 수, width는 가로 폭이므로 원하는 만큼 조절하여 사용하면 된다.