Python

[list] 리스트 컴프리헨션

비번변경 2021. 11. 21. 01:40

리스트 컴프리헨션 (list comprehension)

기존의 리스트를 이용해 새 리스트를 만드는 방법

기존 리스트 생성과 동일하게 대괄호를 이용하나, 대괄호 내에 for 문, if 문 등의 코드를 넣어 리스트를 생성한다.

 

기본 구조 및 동작 순서

리스트 컴프리헨션 동작 순서

 

 

코드

전통적인 방식으로 리스트를 선언하는 것과 리스트 컴프리헨션을 사용하여 선언하는 것을 비교해보자.

# 전통적인 방법
number_1 = []
for i in range(10):
    number_1.append(i)
print("number_1", number_1)


# 리스트 컴프리헨션
number_2 = [i for i in range(10)]
print("number_2", number_2)

 

실행 결과

리스트 컴프리헨션 실행 결과

실행 시 두 개의 리스트가 동일한 값으로 생성되었음을 알 수 있다.

 

 

조건문 추가

기존 리스트를 기반으로 특정 조건에 맞는 값만 필터링해 새 리스트를 만들고 싶다면 for문 뒤에 조건문을 추가하면 된다.

 

코드

even = [i for i in range(10) if i % 2 == 0]
print("even", even)

 

실행 결과

조건문 리스트 컴프리헨션 실행 결과

 

처리 순서는 아래 사진과 같다.

조건문 리스트 컴프리헨션 동작 순서

 

이중 for문 사용

for문을 중복하여 리스트를 생성하는 것도 유효하다.

 

코드

mul = [i * j for j in range(1, 5) for i in range(2, 4)]
print("mul", mul)

 

실행 결과

이중 for 리스트 컴프리헨션 실행 결과

 

처리 순서는 아래와 같다.

이중 for 리스트 컴프리헨션 실행 결과 동작 순서

 

 


참고 문서

https://dojang.io/mod/page/view.php?id=2285 

 

파이썬 코딩 도장: 22.5 리스트 표현식 사용하기

파이썬의 리스트가 특이한 점은 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다는 점입니다. 이렇게 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것을 리스트

dojang.io