행렬(matrix)의 각 행을 특정 사용자 정의 리스트에 포함된 요소의 개수를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 len 메서드를 활용한 함수를 정의하면 손쉽게 해결할 수 있습니다.
예제 코드
def get_count_matrix(my_key):
return len([element for element in my_key if element in custom_list])
my_list = [[31, 5, 22, 7], [85, 5], [9, 11, 22], [7, 48]]
print("The list is :")
print(my_list)
custom_list = [31, 85, 7]
my_list.sort(key=get_count_matrix)
print("The resultant list is :")
print(my_list)실행 결과
The list is : [[31, 5, 22, 7], [85, 5], [9, 11, 22], [7, 48]] The resultant list is : [[9, 11, 22], [85, 5], [7, 48], [31, 5, 22, 7]]
코드 설명
get_count_matrix라는 이름의 함수를 정의하며, 이 함수는 키(key)를 매개변수로 받습니다.함수 내부에서는 리스트 컴프리헨션을 사용하여 리스트의 각 요소를 순회하고, 해당 요소가 사용자 정의 리스트(
custom_list)에 존재하는지 확인합니다.존재하는 요소들로만 구성된 새로운 리스트를 만든 뒤,
len메서드를 통해 그 길이(개수)를 반환합니다.함수 외부에서는 리스트 안에 리스트가 중첩된 형태의 행렬을 정의하고, 콘솔에 출력합니다.
정렬 기준이 될 정수들로 이루어진 별도의 리스트(
custom_list)를 정의합니다.sort메서드를 호출할 때key인자에 앞서 정의한 함수를 지정하여, 각 행에 포함된 사용자 정의 요소의 개수가 적은 순서대로 행렬을 정렬합니다.마지막으로 정렬된 결과 리스트를 콘솔에 출력합니다.
이 방식은 sort 메서드의 key 매개변수에 커스텀 함수를 전달하는 Python의 강력한 정렬 기능을 보여주는 대표적인 예입니다. 필요에 따라 reverse=True 옵션을 추가하면 내림차순 정렬도 간단히 구현할 수 있습니다.