반복작업을 피해라

매일 공부(ML)·2022년 6월 20일
0

이어드림

목록 보기
80/146

대입식을 사용해 컴프리헨션 안에서 반복 작업을 피해라

고객의 요청이 재고 수량을 넘지 않고 배송에 필요한 최소 수량

  • rough code
stock = {
    '못':125,
    '나사못':35,
    '나비너트':8,
    '와서':24,
}

order = ['나사못', '나비너트', '클립']

def get_batches(count, size):
    return count // size

result = {}
for name in order:
    count = stock.get(name,0)
    batches = get_batches(count, 8)
    if batches:
        result[name] = batches

print(result) # {'나사못':4, '나비너트':1}

  • 컴프리헨션 사용하여 루프의 로직 간결화

    • 불필요한 시각적인 잡음이 들어가서 가독성 나쁨
    • 항상 똑같이 변경해야 하므로 실수할 가능성 높다
found = {name: get_batches(stock.get(name,0),8)
         for name in order
         if get_batches(stock.get(name,0),8)}
print(found)

#{'나사못':4, '나비너트':1}

  • 왈러스 연산자(:=)
found = ((name, batches) for name in order
         if (batches := get_batches(stock.get(name,0), 8)))
print(next(found))
print(next(found))

#결과
('나사못',4)
('나비너트',1)
profile
성장을 도울 아카이빙 블로그

0개의 댓글