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

Python에서 문자열 길이를 기준으로 리스트 정렬하기

문자열로 이루어진 리스트가 있을 때, 각 문자열의 길이를 기준으로 리스트를 정렬해야 하는 경우가 자주 있습니다. 즉, 짧은 문자열부터 긴 문자열 순서로 오름차순 정렬하는 것이 목표입니다.

Python에서는 직접 알고리즘을 구현할 수도 있지만, 내장 메서드인 sort() 또는 내장 함수인 sorted()key 인자를 활용하면 훨씬 간단하게 해결할 수 있습니다.

예시

입력:
strings = ["hafeez", "aslan", "honey", "appi"]

출력:
["appi", "aslan", "honey", "hafeez"]

위 예시처럼 문자열 길이가 4, 5, 5, 6 순서로 정렬된 결과를 얻을 수 있습니다. 이제 두 가지 방법을 하나씩 살펴보겠습니다.

방법 1: sorted() 함수 사용

sorted() 함수는 원본 리스트는 그대로 둔 채, 정렬된 새로운 리스트를 반환합니다. key 인자에 len 함수를 전달하면 문자열 길이를 기준으로 정렬됩니다.

알고리즘

1. 문자열 리스트를 초기화한다.
2. sorted(list, key=len) 함수에 리스트와 key를 전달하여 정렬한다.
   문자열 길이 기준으로 정렬해야 하므로 len을 key로 지정한다.
   결과 리스트를 새 변수에 저장한다.
3. 정렬된 리스트를 출력한다.

코드 예제

## 문자열 리스트 초기화
strings = ["hafeez", "aslan", "honey", "appi"]

## sorted() 함수와 key=len을 사용하여 정렬
sorted_list = list(sorted(strings, key=len))

## 정렬 후 결과 출력
print(sorted_list)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

['appi', 'aslan', 'honey', 'hafeez']

방법 2: sort() 메서드 사용

sort() 메서드는 리스트 객체 자체에 적용되며, 원본 리스트를 제자리(in-place)에서 정렬하고 None을 반환합니다. 따라서 별도의 새 변수에 저장할 필요가 없습니다.

알고리즘

1. 문자열 리스트를 초기화한다.
2. list.sort(key=len) 메서드에 key를 전달하여 정렬한다.
   문자열 길이 기준으로 정렬해야 하므로 len을 key로 지정한다.
   sort() 메서드는 리스트를 제자리에서 정렬하므로 새 변수에 저장할 필요가 없다.
3. 정렬된 리스트를 출력한다.

코드 예제

## 문자열 리스트 초기화
strings = ["hafeez", "aslan", "honey", "appi"]

## sort(key) 메서드로 리스트를 제자리에서 정렬
strings.sort(key=len)

## 정렬 후 결과 출력
print(strings)

실행 결과

위 프로그램을 실행하면 동일한 결과가 출력됩니다.

['appi', 'aslan', 'honey', 'hafeez']

sorted() vs sort(): 어떤 것을 사용할까?

  • sorted(): 원본 리스트를 유지해야 하거나, 정렬된 새 리스트가 필요할 때 적합합니다.
  • sort(): 원본 리스트 자체를 변경해도 무방하고 메모리를 절약하고 싶을 때 적합합니다.

두 방법 모두 시간 복잡도는 O(n log n)으로 Timsort 알고리즘을 기반으로 하며, 성능 차이는 거의 없습니다.

마무리

이번 튜토리얼에서는 Python의 sorted() 함수와 sort() 메서드에 len을 key로 전달하여 문자열 길이 기준으로 리스트를 정렬하는 두 가지 방법을 배웠습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.