ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL.6 2차원 list(행, 열, 표)
    TIL 2020. 10. 14. 22:22
    728x90

    ## 2차원 리스트란 table 2 x 2 와 같은 표를 생각하면 댐

    ## 가로, 행, row

    ## 세로, 열, column


    a = [[1020], [3040], [5060]]

     

    :: # [[10, 20], [30, 40], [50, 60]]

     

    ## 리스트 안에 리스트를 넣어 2차원 리스트를 만들 수 있다.

    ## 가독성을 좋게 하기 위해 세로로 작성하기도 한다.


    b = [[1020],

         [3040],

         [5060]]

     

    :: 동일

     

    print(b[0][1])  # b 리스트의 0행 1열 값 == 20

     

    b[0][1] = 1000

     

    print(b[0][1])  # b 리스트의 0행 1열 값 == 1000

     


    a = [[1020], [3040], [5060]]

    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

     

    # 리스트[세로인덱스][가로인덱스]

    # 리스트[세로인덱스][가로인덱스] = 값


    # 톱니형 리스트 // 2차원 튜플 // 2차원 리스트 알아보기 쉽게 출력하는 법

    ## 톱니형 리스트

    리스트 a는 가로 크기(행의 요소 개수) 가 제각각,

    이런 리스트는 요소가 배치된 모양이 톱니처럼 생겼다고 하여 톱니형 리스트라고 부른다.

    a = [[10, 20],    

          [500, 600, 700],     

          [9],     

          [30, 40],  

          [8],    

          [800, 900, 1000]]

    톱니형 리스트는 다음과 같이 append 메서드 등을 사용하여 동적으로 생성할 수 있음.


    ##2차원 tuple

    튜플 = ((값, 값), (값, 값), (값, 값))

    튜플 = ([값, 값], [값, 값], [값, 값])

    리스트 = [(값, 값), (값, 값), (값, 값)]

    # 기본적으로 tuple은 내용을 변경할 수 없으므로

    a 는 안쪽, 바깥쪽 모두 요소 변경 불가.

    b 는 안쪽 요소만 변경 가능

    c 는 바깥쪽 리스트만 변경 가능하다


    ## 2차원 리스트 알아보기 쉽게 출력하는 법

    pprint 모듈의 pprint 함수를 이용하면 가능함


    ## 2차원 리스트 모든 요소 출력하기

    a = [[1020], [3040], [5060]]

    for x, y in a:    # 리스트의 가로 한 줄(안쪽 리스트)에서 요소 두 개를 꺼냄

        print(x, y)

     

    # 10 20

    # 30 40

    # 50 60

     

    ## for 반복문 1번 사용한 방법


    a = [[1020], [3040], [5060]]

     

    for i in a:        # a에서 안쪽 리스트를 꺼냄

        for j in i:    # 안쪽 리스트에서 요소를 하나씩 꺼냄

            print(j, end=' ')

        print()

     

    # 10 20

    # 30 40

    # 50 60

     

    ## for 반복문 2번 사용한 방법

    ## a에서 안쪽 리스트를 꺼낼때 10 ,20 등의 요소 개별값이 아닌 [리스트] 기준을 하나로 친다.

    ## 10 다음 20이 나오는게 아닌 [10, 20]를 하나로 친다.

    ## i는 처음 [10, 20] 그다음 j 는 [10, 20]에서 하나씩 요소를 꺼내 쓴다.


    ## 2차원 리스트의 요소를 인덱스로 접근하느 방법

     

    a = [[1020], [3040], [5060]]

     

    for i in range(len(a)):            # 세로 크기 (len(a) : 행의 갯수와도 같다)

        for j in range(len(a[i])):     # 가로 크기 (len(a[i])) : 열의 갯수와도 같다)

            print(a[i][j], end=' ')

        print()

     

    # 10 20

    # 30 40

    # 50 60

     

    ## for 반복문 2번, range 사용한 방법

    ## 주의할 점!! len 으로 2차원 리스트  a의 크기를 구하면 리스트 안의 모든 요소의 개수가 아닌 안쪽 리스트의 개수(세로크기)가 나온다는 점!!

    ## [10, 20]이 한꺼번에 나온다는 뜻

     

    #### 2차원 리스트를 접근할때는 리스트[세로인덱스][가로인덱스] 형식으로 접근해야함 ####


    a = [[1020], [3040], [5060]]

     

    i = 0

    while i < len(a):    # 반복할 때 리스트의 크기 활용(세로 크기)

        x, y = a[i]      # 요소 두 개를 한꺼번에 가져오기

        print(x, y)

        i += 1           # 인덱스를 1 증가시킴

     

    ## while 반복문을 1번 사용한 방법

    ## x, y = a[i]와 같이, 변수 두 개를 지정해주면 한 줄(안쪽리스트)에서 두 개를 한꺼번에 가져올 수 있다.


    a = [[1020], [3040], [5060]]

     

    i = 0

    while i < len(a):           # 세로 크기

        j = 0

        while j < len(a[i]):    # 가로 크기

            print(a[i][j]end=' ')

            j += 1              # 가로 인덱스를 1 증가시킴

        print()

        i += 1                  # 세로 인덱스를 1 증가시킴

     

        ## while 반복문을 2번 사용한 방법

        #### 2차원 리스트를 접근할때는 리스트[세로인덱스][가로인덱스] 형식으로 접근해야함을 잊지말자####


    i = 0

    while i < len(a):

        j = 0

        while j < len(a[i]):

            print(a[i][j]end=' ')

            j += 1

            i += 1    ## 잘못된 방법 error

        print()

     

    ## i += 1 위치가 error 인 경우이다.

    ## 0행 0열 출력 후, 0행 1열이 아닌 1행 1열을 출력해버리게 된다.



    728x90

    'TIL' 카테고리의 다른 글

    TIL.8 웹 크롤링(Python)_네이버 실시간 검색어 가져오기  (0) 2020.10.16
    TIL.7 2차원 리스트_2  (0) 2020.10.15
    TIL. 5 list 함수 응용편_3  (0) 2020.10.13
    TIL.4+0.5 list 함수 응용편_2  (0) 2020.10.12
    TIL.4 list 함수 응용편  (0) 2020.10.12
Designed by Tistory.