반응형

리스트 컴프리헨션(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)

리스트 컴프리헨션이 얼마나 간결한 기능인지 알 수 있다.

 

 

 

 

반응형

+ Recent posts