[Python] list comprehension에 대한 즐거운 이해
list comprehension을 검색했더니 거의 제일 처음에 나온 글
이 글에 따르면 리스트 컴프리헨션의 정의는
‘리스트를 쉽게, 짧게 한 줄로 만들 수 있는 파이썬의 문법’이다.
배열의 선언과, 배열의 원소에 값을 할당 하는 것을 매우 간편하게 하는 역할을 한다.
리스트 컴프리헨션의 기본적인 문법은 아래와 같다.
[(변수를 활용한 값) for (사용할 변수 이름) in (순회할 수 있는 값)]
나는 이번 프로젝트를 하며 list comprehension을 처음 알게 되었는데
내 코드에는 이렇게 적용되었다.
result = {
...
'detail_images': [detail_image.detail_image_url for detail_image in product.detailimage_set.all()],
...
}
데이터베이스에에서 특정 상품(product:이미 특정 상품 객체를 담아두었다.)에 대한 상세 이미지(detailimage_set)를 모두 쿼리셋으로 불러온 후,
객체 하나하나(detail_image:이름은 임의로 지정해준 것)의 detail_image_url 속성을 리스트에 담는다.
리스트 컴프리헨션으로 정리하기 전에는 딕셔너리 안에서 for문을 돌려서 코드를 작성하였는데 가독성이 무척 떨어졌었다. 멘토님의 권유에 따라 위와 같이 정리하였더니 읽기 훨씬 좋아졌다.
이 외에도 리스트 컴프리헨션과 if문을 함께 적용한 코드도 있는데,
아래와 같다.
result = {
...
'product_options' : [product_option.time.name for product_option in product.producttime_set.all()]\
if product.product_option else None,
...
}
위 글에 따르면
조건이 2개인 if문을 리스트컴프리헨션에 적용할 수 도 있는데,
이 때는 and로 조건을 묶지 않고, if문을 한 번 더 써준다.
만일 and로 조건을 묶는다면 구문애러가 발생한다.
반대로 or 조건의 경우 한 if문 안에서 or로 조건문을 연결하여 실행하여야 한다.
신기...방기
내 리뷰코드에도 한 번 적용 해봐야겠다.
깔끔한 코딩 생활!