반응형
리스트 컴프리헨션(List Comprehension)이란?
대괄호 안에 조건문과 반복문을 적용하여 리스트를 초기화하는 방법이다.
-> 코딩테스트 문제를 풀 때 유용한 문법이라고 한다.
사용 예시
반복문만 사용
array = [i for i in range(10)]
print(array) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
간단한 반복문으로 위와 같은 배열을 생성할 수 있다.
반복문과 조건문 사용
array = [i for i in range(10) if i % 2 == 1]
print(array) # [1, 3, 5, 7, 9]
조건문을 추가할 수 있다.
삽입 인자 변경
array = [i * i for i in range(10)]
print(array) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
리스트에 삽입할 인자를 변경할 수 있다.
2차원 배열 생성
# 모든 성분이 0인 3 x 4 크기의 2차원 배열
array = [[0] * 3 for _ in range(4)]
# [0] * 3 => [0, 0, 0]
print(array)
# [[0,0,0], [0,0,0], [0,0,0], [0,0,0]]
# 잘못된 사용
array = [[0] * 3] * 4
2차원 배열을 생성할 때 매우 유용하게 사용할 수 있다.
('_'는 0, 1, ..., n의 값을 가질테지만, 사용하지 않는 값이라는 뜻으로 '_'로 표시한다.)
잘못된 사용은 [0, 0, 0]라는 배열 하나를 생성하고, 같은 위치를 참조하는 4개의 배열을 생성한다.
즉, 동일한 배열([0, 0, 0]) 하나를 세 번 참조하는 것이므로 의도와 다르다.
일반적 코드와의 비교
## 리스트 컴프리헨션
# 0 ~ 19까지의 홀수
array = [i for i in range(20) if i % 2 == 1]
print(array)
## 일반적인 코드
# 0 ~ 19까지의 홀수
array = []
for i in range(20) :
if i % 2 == 1 :
array.append(i)
print(array)
리스트 컴프리헨션이 얼마나 간결한 기능인지 알 수 있다.
반응형
'코딩테스트' 카테고리의 다른 글
백준 1012번 풀이 - 파이썬(Python) (그래프 탐색 / 깊이 우선 탐색(DFS)) (0) | 2022.09.02 |
---|---|
Python - n x m 영행렬(zero matrix) 선언하기 (0) | 2022.09.02 |
Python으로 스택(stack), 큐(queue) 자료구조 구현하기 (0) | 2022.09.01 |
백준 2839번 풀이 (파이썬) - DP / 그리디 알고리즘 (1) | 2022.08.28 |
Python 자주 사용되는 내장 함수 정리(sum, min, max, eval, sorted, permutations, combinations, counter, gcd) - 합, 최대값, 최소값, 정렬, 순열, 조합, 개수, 최대공약수 (0) | 2022.08.24 |