▶ 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 |