본문 바로가기

프로그래밍 언어/python

[Data Structure] List

▶ 2차원 배열 생성 3가지 방법

1) 

arr = [ [0] * cols ] * rows

: 하나의 [0] * cols를 모든 rows의 index에서 가리키는 형상이다.

: 따라서 하나의 열만 수정한다 하더라도, 모든 열이 다 수정된다.

: 추천하지 않는 2차원 배열 생성 법

 

2) 

가장 추천하는 방법

arr = [ [0 for _ in range(cols)] for _ in range(rows) ]

혹은

arr = [ [0] * cols  for _ in range(rows) ]

 

3) 

arr = []

for _ in range(cols):

    col = []

    for _ in range(rows):

        col.append(0)

    arr.append(col)

 

 

▶ 2차원 배열 생성시 속도 개선 방법

mylist = []

for tag in tags:

    for entry in entries:

        if tag in entry:

            mylist .extend(entry)

 

위의 코드를 아래와 같이 바꾼다.

--> mylist = [ entry for tag in tags for entry in entries if tag in entry ]

 

 

활용 예시)

이차원 배열(board) 중 최대 값 찾을 때

max( [ num for row in board for num in row ] )

 

 


참고) 리스트를 원소로 가지는 딕셔너리 생성시

from collections import defaultdict

list_dict = defaultdict(list)

: default 값이 리스트인 딕셔너리(쉽게 말해 value가 리스트 이면서 값이 없으면 value로 가진다)

>>> list_dict['new_key']

[]

int_dict = defaultdict(int)

>>>int_dict['new_key']

0

 

 

 

 

 

snakify.org/ko/lessons/two_dimensional_lists_arrays/

 

반응형

'프로그래밍 언어 > python' 카테고리의 다른 글

경로 유틸리티  (0) 2021.02.07
Collections utils  (0) 2020.11.29
Miscellaneous  (0) 2020.11.03
입 출력 속도 개선  (0) 2020.10.09
[Data Structure] dictionary  (0) 2020.09.23