TIL#70 list comprehension

Dasom·2020년 9월 21일
0

project

목록 보기
4/19

1차 프로젝트 중 product 의 views.py 작성의 코드리뷰를 받았고 그 중 한번도 해보지 않았던 숙제가 주어졌다!!
정말 어떻게 풀어야 하나 막막하고 구글링을 계속 해보았다😂
딕셔너리를 객체들로 가지고 있는 리스트를 만드는 코드였는데 그 코드를 리스트 컴프리핸션으로 바꿔서 가독성과 효율을 높여 보라는 멘토님의 조언을 받아 시도하게 되었다. 처음에 막막했던 코드가 구글링을 많이 하여 기본 틀을 잡고 끙끙거리던 와중에 드디어 해결을 했다! 프로젝트 내내 3-4시간씩밖에 못 잤기 때문에 오늘은 일찍 자볼까 하는 나의 결심이 깨지게 되는 순간이었다...ㅎㅎ 성격이 해결해야 하는 게 있으면 해결을 해야 잠이 오는 편이라... 오늘도 또 그렇게 새벽이 되었다. 하지만!!!! 개발을 공부한 기간에 비해 예제들을 꽤 많이 풀어보았다고 생각했지만 이번처럼 뿌듯하고 설레본건 처음이다 ㅎㅎㅎ 그래서 블로그에 남긴다😆

# 처음에 작성한 코드

total_count = len(products)
results = []

for data in products:
    price              = int(data.price)
    discount_rate      = int(data.discount_rate)
    discount_price     = 0

    if discount_rate != 0:
        discount_price = price // 100 * (100 - discount_rate)

    add = {
        'main_image'    : data.main_image,
        'name'          : data.name,
        'total_count'   : total_count,
        'price'         : price,
        'discount_rate' : discount_rate,
        'discount_price': discount_price,
        'product_id'    : data.id
    }

    results.append(add)
# 리스트 컴프리핸션으로 수정한 코드!!!

results = [{
            'main_image'    : data.main_image, 
            'name'          : data.name, 
            'total_count'   : len(products), 
            'price'         : int(data.price), 
            'discount_rate' : int(data.discount_rate), 
            'discount_price': int(data.price) // 100 * (100 - int(data.discount_rate)) if int(data.discount_rate) != 0 else 0, 
            'product_id'    : data.id} for data in products]
profile
개발자꿈나무🌲

0개의 댓글