더북(TheBook)

BETTER WAY 15
클로저가 변수 스코프와 상호 작용하는 방법을 알자

 

 

숫자 리스트를 정렬할 때 특정 그룹의 숫자들이 먼저 오도록 우선순위를 매기려고 한다고 하자. 이런 패턴은 사용자 인터페이스를 표현하거나, 다른 것보다 중요한 메시지나 예외 이벤트를 먼저 보여줘야 할 때 유용하다.

이렇게 만드는 일반적인 방법은 리스트의 sort 메서드에 헬퍼 함수를 key 인수로 넘기는 것이다. 헬퍼의 반환 값은 리스트에 있는 각 아이템을 정렬하는 값으로 사용된다. 헬퍼는 주어진 아이템이 중요한 그룹에 있는지 확인하고 그에 따라 정렬 키를 다르게 할 수 있다.

def sort_priority(values, group):

def helper(x):

if x in group:

return (0, x)

return (1, x)

values.sort(key=helper)

 

이 함수는 간단한 입력값에 사용한다.

numbers = [8, 3, 1, 2, 5, 4, 7, 6]

group = {2, 3, 5, 7}

sort_priority(numbers, group)

print(numbers)

 

>>>

[2, 3, 5, 7, 1, 4, 6, 8]

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.