본문 바로가기
IT/python

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

by 가능성1g 2021. 8. 19.
반응형

요즘 머신러닝 공부하면서 자주보게 되었던, 대괄호 안에 있는 for 문.

 

기술의 용어도 모르다가 "클린 파이썬" 이라는 책에서 알게 되었다.

 

리스트를 다루는 방법으로 map, filter 를 쓰는방법이 있다. ( javascript 를 써본사람은 익숙 할듯 )

 

numbers = [ 10, 45, 34, 89, 34, 23, 6 ]
square_numbers = map(lambda num: num**2, numbers) # 배열내 숫자의 제곱을 리턴

data = [1, "A", 0, False, True]
filtered_data = filter(None, data) # 모든 참값에 필터를 사용

이것들을 리스트 컴프리헨션을 이용한 변경 버전 이다. 

square_numbers = [num**2 for num in numbers]

filtered_data = [item for item in data if item ]

즉, 배열내에 배열을 다루는 산식을 넣어서 배열에 대한 공식을 직접 써넣는 방법이다. 

 

# 사용대상

for 문 1개와 if 문 0,1 개로 조합되는 식에 쓸 수 있음

 

# 장점

리스트에 대한 변환을 직관적으로 알아 볼 수 있다.

 

# 사용식

[ 리턴값 for 아이템 in 범위 {if 제한식} ]

 

조금 복잡한 버전. ( 2차원 배열 변환)

matrix = [[1,2,3],
[4,5,6],
[7,8,9]]

# 행렬회전

matrix_changed = [[ matrix[row][col]
 for row in range(0,height) ]
 for col in range(0,width ]
 
 # 결과
 matrix_changed = [[1,4,7],
 [2,5,8],
 [3,6,9]]

데이터 전처리에서 많이 보이는 스킬이니 눈으로 익혀두자!

반응형