Comprehension

jinatra·2021년 9월 5일
0

Python

목록 보기
15/15
post-thumbnail

Comprehension


Comprehension이란

if문을 사용한 조건식이나 for문을 사용하여 loop를 쓸 때, 더 간단하고 직관적으로 사용하기 위한 방식이다.


List Comprehension

아래 예시를 보자.

숫자 1~7이 있는 list a에 5 초과인 수가 있으면 두배를 곱해서 반환한다.

a = [1, 2, 3, 4, 5, 6, 7]
result = []

for x in a:
  if x > 5:
    result.append(x * 2)

print(result)
 
>> [12, 14]

하지만 list comporehension을 이용하면 굉장히 간단하게 처리할 수 있다.

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

result = [x * 2 for x in a if x > 5]

print(result)

>> [12, 14]

일반적인 식으로 쓰면 몇줄이나 쓸 것이, list comporehension을 사용하게 되면 단 한줄로 쓰게 된다.

아래와 같이 기억을 하고 적재적소에 쓰면 될 듯 하다.


Atchapedia 적용

내가 진행중인 Atchapedia 프로젝트에도 list comporehension을 사용한 경우가 있었다.

영화 상세 페이지의 데이터를 가져오는 작업을 할 때, 영화 - 장르, 국가같이 M2M 관계에 있는 데이터들의 경우 1:1 관계와 같이 불러오면 에러가 뜨므로 for loop으로 한번 돌려 list 형식으로 뽑아줘야 했다.

만약에 일반적인 표현식으로 특정 영화의 장르를 뽑으려고 했다면, 아래와 같이 써줘야 했을 것이다.

result = []

for genre in movie.genre.all():
  result.append(genre.name)

하지만 list comprehension을 이용해서 아래와 같이 간단하게 표현을 할 수 있었다.


간단 정리

최종적으로는, comprehension에 대해 전반적인 이해를 위해서는 아래 그림을 참고하면 될 것이다.





Take Away

간단함 뒤의 복잡함

위에는 나의 이해와 설명을 돕기 위해 간단한 예시만을 들었지만, 실제로 사용되는 comprehension식을 보면 한번에 이해가 되지 않는 것들이 많았다.

현재 나의 경우, 때로는 한줄로 쓰는 코드보다는 조금 길더라도 직관적으로 이해가 가능한 코드를 쓰고 보는 것을 선호하기에 내가 이해할 수 있는 선 안에서만 comprehension을 사용해야겠다.





참고
https://wikidocs.net/22805
https://wikidocs.net/84393
https://doorbw.tistory.com/174

profile
으악

0개의 댓글