ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL.7 2차원 리스트_2
    TIL 2020. 10. 15. 21:17
    728x90

    ## 반복문으로 리스트 만들기

    a = [] # 빈 리스트 생성

     

    for i in range(10):

    a.append(0) # append로 요소 추가

     

    ::

    [0, 1, 2...9]

    # for 반복문으로 1차원 리스트 만들기


    a = [] # 빈 리스트 생성

     

    for i in range(3):

    line = [] # 안쪽 리스트로 사용할 빈 리스트 생성

    for j in range(2):

    line.append(0) # 안쪽 리스트에 0 추가

    a.append(line) # 전체 리스트에 안쪽 리스트를 추가

     

    print(a)

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

     

    ## for 반복문으로 2차원 리스트 만들기


    a = [[0*j for j in range(2)] for i in range(3)]

    print(a)

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

     

    b = [[0] * 2 for i in range(3)]

    print(b)

     

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

     

    ## 리스트 표현식으로 2차원 리스트 만들기


    a = [3, 1, 3, 2, 5] # 가로 크기를 저장한 리스트

    b = [] # 빈 리스트 생성

     

    for i in a: # 가로 크기를 저장한 리스트로 반복

    line = [] # 안쪽 리스트로 사용할 빈 리스트 생성

    for j in range(i): # 리스트 a에 저장된 가로 크기만큼 반복

    line.append(0)

    b.append(line) # 리스트 b에 안쪽 리스트를 추가

     

    print(b)

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

     

    ## for 문을 이용해 빈 리스트에 톱니형 리스트 만들기


    c = [[0] * i for i in [3, 1, 3, 2, 5]]

    print(c)

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

     

    ## 리스트 표현식을 이용한 톱니형 리스트 만들기


    ## 2차원 리스트의 할당 과 복사

     

    a = [[10, 20], [30, 40]]

    b = a

    b[0][0] = 500

    print(a)

    :: [[500, 20], [30, 40]]

    print(b)

    :: [[500, 20], [30, 40]]



    a = [[10, 20], [30, 40]]

    b = a.copy()

    b[0][0] = 500

    print(a)

    :: [[500, 20], [30, 40]]

    print(b)

    :: [[500, 20], [30, 40]]

     

    a = [[10, 20], [30, 40]]

    import copy # copy 모듈을 가져옴

    b = copy.deepcopy(a) # copy.deepcopy 함수를 사용하여 깊은 복사

    b[0][0] = 500

     

    print(a)

    :: [[10, 20], [30, 40]]

    print(b)

    :: [[500, 20], [30, 40]]




    ## 1번 코드는 할당 // 2번 코드는 복사 이다.

    ## 3번 deepcopy 함수를 통한 복사 이다.

     

    ## 이전 copy 메서드를 이용해 변수 2개, 리스트 2개를 생성할 수 있었으나

    ## 2차원 이상의 다차원의 리스트는 copy 메서드를 이용해도 2개의 리스트를 생성할 수 없다

    ## 따라서 1차원 리스트의 copy 함수의 역할을 수행하게 하기 위해선 copy 모듈의 deepcopy 함수를 사용해야한다(tuple도 동일)

    728x90
Designed by Tistory.