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

Python – 최대 문자열 길이를 기준으로 행렬(리스트의 리스트) 정렬하기

파이썬에서 행렬(리스트의 리스트)을 가장 긴 문자열 길이를 기준으로 정렬해야 하는 경우가 있습니다. 이때는 리스트를 매개변수로 받는 별도의 함수를 정의하고, 리스트 컴프리헨션(list comprehension)과 함께 내장 함수인 maxlen을 활용하여 각 행의 최대 문자열 길이를 계산한 뒤, 이 값을 정렬 기준(key)으로 사용하면 됩니다.

예제 코드

def max_length(row):
    return max([len(element) for element in row])

my_matrix = [['pyt', 'fun'], ['python'], ['py', 'cool'], ['py', 'ea']]

print("The matrix is :")
print(my_matrix)

my_matrix.sort(key=max_length)

print("The result is :")
print(my_matrix)

실행 결과

The matrix is :
[['pyt', 'fun'], ['python'], ['py', 'cool'], ['py', 'ea']]
The result is :
[['py', 'ea'], ['pyt', 'fun'], ['py', 'cool'], ['python']]

코드 설명

  • max_length라는 이름의 함수를 정의합니다. 이 함수는 리스트를 매개변수로 받아, 리스트 컴프리헨션을 통해 각 요소의 길이(len)를 구한 후, max 함수로 그중 가장 긴 문자열의 길이를 반환합니다.

  • 함수 외부에서는 여러 개의 리스트를 요소로 가지는 행렬 형태의 리스트를 정의하고, 콘솔에 출력하여 원본 상태를 확인합니다.

  • sort() 메서드 호출 시 key=max_length 옵션을 지정하여, 앞서 정의한 함수의 반환값(각 행의 최대 문자열 길이)을 기준으로 오름차순 정렬을 수행합니다.

  • 정렬된 결과는 다시 콘솔에 출력됩니다. 실행 결과를 보면, 최대 문자열 길이가 2인 ['py', 'ea']부터 시작해 3, 4, 6 순서로 행들이 재배치된 것을 확인할 수 있습니다.

추가 팁: lambda 활용하기

별도의 함수를 정의하지 않고 lambda 표현식을 사용하면 코드를 더욱 간결하게 작성할 수 있습니다.

my_matrix.sort(key=lambda row: max(len(e) for e in row))

두 방식 모두 동일한 결과를 반환하며, 상황에 따라 가독성과 재사용성을 고려해 선택하면 됩니다.