TIL) List Comprehension

geewl·2022년 6월 16일
0

TIL

목록 보기
10/13

List Comprehension

  • 리스트 컴프리헨션(List Comprehension)은 리스트를 보다 간결하게 만들 수 있는 파이썬의 문법 중 하나이다.

services = Service.objects.all()
service_list = []
for service in services:
    data = {
        "title"     : service.title,
        "location"  : service.location,
        "content"   : service.content
     }
 	service_list.append(data)      

작성한 코드 중의 일부이다.
여기서 Service라는 클래스에 있는 객체들을 모두 불러와서 services라는 변수에 담고, for문을 돌면서 service안에 있는 요소들을 하나씩 가져오게 된다.

그러면 여기서 리스트 컴프리헨션을 사용하면 얼마나 간결하게 바뀔 수 있을까?

우선, 리스트 컴프리헨션의 문법은 이러하다.

[출력표현식 for 요소 in 입력Sequence [if 조건식]]

배열을 먼저 만들고, for문 안에서 각 요소의 값을 할당하는 작업이 한 줄 안에 모두 가능하다.
여기서 출력표현식(output Expression)은 말 그대로 "i*i"와 같이 for문을 돌려서 최종적으로 출력하고자 하는 식을 이야기한다. 위의 예시에는 if 절이 없지만, 만약 if 절이 있다면 해당 요소가 조건에 부합하는지 아닌 지를 검사한 후, service_list라는 빈 리스트에 append되어, 결과적으로 service_list를 호출했을 때, 원하는 값을 얻을 수 있게 되는 것이다.

 services = Service.objects.all()

            service_list = [{
                "title"     : service.title,
                "location"  : service.location,
                "content"   : service.content
            }for service in services]

위의 설명을 토대로 list comprehension을 적용하여 재작성한 코드이다.

이전의 코드 보다 한결 간결해진 느낌이라 보기에도 편한 것 같다.
이제 익숙해지도록 적용해보는 연습을 해봐야겠다.

0개의 댓글