개발

파이썬 - 리스트 컴프리헨션

kwony 2024. 5. 3. 13:12

개인적으로 파이썬은 가독성이 좋은 언어라고 생각하는데 가독성을 돕는 대표적인 기능이 리스트 컴프리헨션이다

 

리스트 요소들에 제곱 값을 새로운 리스트로 만들기 위해선 아래 코드처럼 map 이라는 함수를 사용해서 구현하는데

numbers = [1, 2, 3, 4, 5]

square_numbers = map(lambda num: num**2, numbers)

 

리스트 컴프리헨션을 사용하면 함수없이 구현할 수 있다. 

 

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

 

처음 사용할 때는 문법이 익숙하지 않을수도 있다. 연산이 먼저 나오고 뒤에 for 문이 나오는 문법이 대부분 프로그래머한테 익숙한 형태는 아니다. 그런데 자주 사용하다보면 따로 함수를 만들지 않아도 되기 때문에 편하게 쓸 수 있다. 

 

추가로 조건문을 넣어서 필터링 기능도 만들수 있다. 아래 코드에서는 리스트 컴프리헨션에서 int 조건문을 추가해서 정수인 값만 필터링을 걸도록 했다. 

 

data = [1, 2, 3, '123']
data = [item for item in data if isinstance(item, int)]

print(data) # [1, 2, 3]

 

 

리스트 컴프리헨션을 두개 겹쳐서 사용할 수도 있다. 아래 코드처럼 a, b 모든 연소들에 대해서 곱한 리스트를 만들수 있다. 

 

a = [1, 3, 5]
b = [2, 4, 6]

print([item_a * item_b for item_a in a for item_b in b])

 

그런데 이렇게 만들면 조금 복잡해지는것 같긴 하다. 여기서부턴 각자 판단에 맞춰서 사용하는걸 추천...