[python]list comprehension

김은지·2022년 3월 13일
0

학습 내용 정리

목록 보기
10/25

[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로 조건문을 연결하여 실행하여야 한다.

신기...방기

내 리뷰코드에도 한 번 적용 해봐야겠다.

깔끔한 코딩 생활!

0개의 댓글