이 튜토리얼에서는 파이썬에서 문자열 리스트를 정렬하는 다양한 방법을 알아봅니다. sort() 메서드와 sorted() 함수를 이용한 기본 정렬부터 시작해, 길이나 숫자 값처럼 다양한 기준으로 문자열 리스트를 정렬하는 방법까지 예제 코드와 함께 차근차근 살펴보겠습니다.
1. list.sort() 메서드로 오름차순 정렬하기
sort() 메서드는 원본 리스트 자체를 직접 정렬하는 in-place(제자리) 정렬 방식입니다. 새로운 리스트를 생성하지 않고 기존 리스트의 요소 순서를 바로 변경한다는 점이 특징입니다. 먼저 오름차순으로 정렬하는 예제를 확인해 보겠습니다.
예제
# 문자열 리스트 strings = ['Python', 'C', 'Java', 'Javascript', 'React', 'Django', 'Spring'] # 오름차순으로 정렬 strings.sort() # 정렬된 리스트 출력 print(strings)
실행 결과
위 프로그램을 실행하면 아래와 같은 결과가 출력됩니다.
['C', 'Django', 'Java', 'Javascript', 'Python', 'React', 'Spring']
2. sort() 메서드로 내림차순 정렬하기
reverse 인자에 True를 전달하면 리스트를 내림차순으로 정렬할 수 있습니다. 코드로 바로 확인해 보겠습니다.
예제
# 문자열 리스트 strings = ['Python', 'C', 'Java', 'Javascript', 'React', 'Django', 'Spring'] # 내림차순으로 정렬 strings.sort(reverse=True) # 정렬된 리스트 출력 print(strings)
실행 결과
['Spring', 'React', 'Python', 'Javascript', 'Java', 'Django', 'C']
3. sorted() 함수로 정렬하기
지금까지는 sort() 메서드를 사용해 원본 리스트를 직접 정렬했습니다. 이번에는 파이썬 내장 함수인 sorted()를 활용하는 방법을 살펴보겠습니다. sorted()는 원본 리스트는 그대로 두고, 정렬된 새로운 리스트를 반환한다는 점에서 sort() 메서드와 차이가 있습니다.
예제
# 문자열 리스트 strings = ['Python', 'C', 'Java', 'Javascript', 'React', 'Django', 'Spring'] # 오름차순으로 정렬된 새 리스트 생성 sorted_strings = sorted(strings) # 정렬된 리스트 출력 print(sorted_strings)
실행 결과
['C', 'Django', 'Java', 'Javascript', 'Python', 'React', 'Spring']
sorted() 함수 역시 두 번째 인자로 reverse=True를 전달하면 내림차순 정렬이 가능합니다.
예제
# 문자열 리스트 strings = ['Python', 'C', 'Java', 'Javascript', 'React', 'Django', 'Spring'] # 내림차순으로 정렬된 새 리스트 생성 sorted_strings = sorted(strings, reverse=True) # 정렬된 리스트 출력 print(sorted_strings)
실행 결과
['Spring', 'React', 'Python', 'Javascript', 'Java', 'Django', 'C']
4. 문자열 길이를 기준으로 정렬하기
그렇다면 문자열의 길이를 기준으로 리스트를 정렬하려면 어떻게 해야 할까요? key 인자를 활용하면 가능합니다. sort() 메서드와 sorted() 함수 모두 key 인자를 지원하며, 여기에는 함수를 전달할 수 있습니다. 정렬은 해당 함수의 반환값을 기준으로 수행됩니다. 문자열 길이 기준 정렬은 len 함수를 key로 전달하면 됩니다.
예제
# 문자열 리스트 strings = ['Python', 'C', 'Java', 'Javascript', 'React', 'Django', 'Spring'] # 길이를 기준으로 오름차순 정렬 strings.sort(key=len) # 정렬된 리스트 출력 print(strings)
실행 결과
['C', 'Java', 'React', 'Python', 'Django', 'Spring', 'Javascript']
key 인자에는 len뿐만 아니라 어떤 함수든 전달할 수 있습니다. 정렬 시 각 요소에 해당 함수를 적용한 반환값을 비교 기준으로 삼기 때문입니다. 물론 sorted() 함수에서도 동일하게 동작합니다.
5. 숫자 값(정수)을 기준으로 정렬하기
문자열 형태의 숫자들이 담긴 리스트를 실제 정수 값을 기준으로 정렬하는 예제도 살펴보겠습니다. key 인자에 int 함수를 전달하면 문자열이 정수로 변환된 값을 기준으로 정렬됩니다.
예제
# 문자열 형태의 숫자 리스트 strings = ['7', '34', '3', '23', '454', '12', '9'] # 정수 값 기준으로 오름차순 정렬 sorted_strings = sorted(strings, key=int) # 정렬된 리스트 출력 print(sorted_strings)
실행 결과
['3', '7', '9', '12', '23', '34', '454']
만약 key 없이 그대로 정렬했다면 사전식(문자열) 비교 때문에 ['12', '23', '3', '34', '454', '7', '9']와 같이 의도와 다른 결과가 나왔을 것입니다. 이처럼 key 인자는 정렬 기준을 유연하게 바꿀 수 있는 강력한 도구입니다.
마무리
지금까지 파이썬에서 문자열 리스트를 정렬하는 다양한 방법을 살펴보았습니다. 정리하면 다음과 같습니다.
- list.sort(): 원본 리스트를 제자리에서 정렬하며 None을 반환
- sorted(): 원본을 변경하지 않고 정렬된 새 리스트를 반환
- reverse=True: 내림차순 정렬
- key 인자: len, int 등 임의의 함수를 기준으로 정렬
key와 reverse 인자는 동시에 조합해서 사용할 수 있으므로, 원하는 정렬 방식을 자유롭게 구현해 보시기 바랍니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.