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

Python – K의 배수 개수를 기준으로 리스트 행 정렬하기

리스트의 각 행을 K의 배수가 포함된 개수를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 나머지 연산자(%)를 활용한 함수를 정의하면 간단하게 해결할 수 있습니다.

아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.

예제 코드

def multiple_sort_val(row):
   return len([ele for ele in row if ele % K == 0])

my_list = [[11, 44, 7, 11], [7, 5, 44, 11], [11, 6, 35, 44], [92, 92, 5]]

print("The list is :")
print(my_list)

K = 11
print("The value for K is ")
print(K)

my_list.sort(key=multiple_sort_val)

print("The resultant list is :")
print(my_list)

실행 결과

The list is :
[[11, 44, 7, 11], [7, 5, 44, 11], [11, 6, 35, 44], [92, 92, 5]]
The value for K is
11
The resultant list is :
[[92, 92, 5], [7, 5, 44, 11], [11, 6, 35, 44], [11, 44, 7, 11]]

코드 설명

  • 먼저 리스트를 매개변수로 받는 multiple_sort_val 함수를 정의합니다.

  • 함수 내부에서는 리스트 컴프리헨션과 len() 메서드를 사용하여, 각 요소를 K로 나눴을 때 나머지가 0이 되는(즉, K의 배수인) 요소만 모은 뒤 그 개수를 계산합니다.

  • 계산된 K의 배수 개수가 해당 행의 정렬 기준값으로 반환됩니다.

  • 함수 외부에서는 리스트 안에 여러 개의 리스트가 중첩된 구조(리스트의 리스트)를 정의하고 콘솔에 출력합니다.

  • 정렬 기준으로 사용할 K 값을 정의한 후 콘솔에 함께 출력합니다.

  • sort() 메서드를 호출하면서 key 인자에 앞서 정의한 함수를 지정하여, 각 행에 포함된 K의 배수 개수를 기준으로 오름차순 정렬을 수행합니다.

  • 정렬이 완료된 최종 결과 리스트가 콘솔에 출력됩니다.

위 실행 결과를 보면, K=11일 때 [92, 92, 5]는 11의 배수가 하나도 없어 가장 앞에 위치하고, [11, 44, 7, 11]은 11의 배수가 세 개(11, 44, 11)로 가장 많아 마지막에 정렬된 것을 확인할 수 있습니다.