Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 사용자 정의 요소 개수를 기준으로 행렬의 행 정렬하기

행렬(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 옵션을 추가하면 내림차순 정렬도 간단히 구현할 수 있습니다.