Python의 sort() 메서드는 리스트를 값 기준 오름차순으로 정렬합니다. reverse 매개변수를 사용하면 내림차순 정렬도 가능하며, sort()는 선택적으로 사용자 지정 정렬을 위한 함수를 인자로 받을 수 있습니다.
개발자라면 누구나 데이터를 정렬해야 하는 상황을 마주하게 됩니다. 정렬은 다양한 분야에서 필수적인 작업입니다. 사용자 이름을 알파벳 역순으로 정렬하거나, 이메일 수신자 목록을 알파벳순으로 정렬해야 할 수도 있습니다.
Python은 개발자가 리스트를 손쉽게 정렬할 수 있도록 sort()라는 내장 함수를 제공합니다. sort() 함수는 다양한 옵션을 통해 리스트의 순서를 자유롭게 커스터마이징할 수 있어, 프로그램에 가장 적합한 방식으로 데이터를 배치할 수 있습니다.
이 튜토리얼에서는 Python에서 정렬의 기본 개념과 sort() 함수의 사용법을 자세히 살펴보겠습니다.
Python 리스트 정렬하기
sort() 함수는 리스트를 오름차순으로 정렬합니다. 추가 매개변수를 지정하면 내림차순 정렬이나 사용자 지정 정렬을 사용할 수 있으며, 이러한 매개변수는 모두 선택 사항입니다.
먼저 sort() 메서드의 문법을 살펴보겠습니다:
sort(reverse=True, key=function)
sort() 메서드는 두 가지 선택적 인자를 받습니다:
- reverse: True로 설정하면 리스트를 내림차순으로 정렬합니다.
- key: 정렬 기준이 되는 함수를 지정합니다.
오름차순으로 리스트 정렬하기
아래에서는 숫자 목록이 담긴 Python 배열을 정의합니다. 이 배열의 숫자들은 특정한 순서 없이 나열되어 있습니다. sort() 함수를 사용해 배열을 정렬해 보겠습니다:
data = [9, 12, 8, 4, 6] data.sort() print(data)
코드 실행 결과는 다음과 같습니다:
[4, 6, 8, 9, 12]
코드의 첫 번째 줄에서 무작위 순서의 숫자 리스트를 선언했습니다.
그다음 인자 없이 sort() 함수를 호출합니다. 이렇게 하면 원본 리스트가 오름차순으로 정렬되며, 마지막 줄에서 정렬된 데이터를 출력합니다.
sort() 함수는 원본 배열 자체를 변경한다는 점에 유의하세요.
내림차순으로 리스트 정렬하기
reverse 인자를 True로 설정하면 리스트가 내림차순으로 정렬됩니다. 기본값은 False이며, 이 경우 최종 리스트는 오름차순으로 정렬됩니다.
아래는 학생 이름 목록입니다. 이 목록을 알파벳 역순으로 정렬하고 싶다면 reverse 인자와 함께 sort() 메서드를 사용하면 됩니다:
students = ['Hannah', 'Arnold', 'Paul', 'Chris', 'Kathy'] students.sort(reverse=True) print(students)
코드는 학생 이름 목록을 알파벳 역순으로 반환합니다:
['Paul', 'Kathy', 'Hannah', 'Chris', 'Arnold']
key 매개변수로 사용자 지정 정렬하기
리스트를 우리만의 방식으로 정렬할 수도 있습니다. 예를 들어, 배열 안 문자열의 길이를 기준으로 배열을 정렬할 수 있습니다.
문자열 길이 기준으로 정렬하기
key 매개변수를 사용하면 직접 만든 정렬 기준을 정의할 수 있습니다. 다음은 key 인자를 활용해 문자열 길이별로 리스트를 정렬하는 예제입니다:
students = ['Sophie', 'Alexander', 'Paul', 'Chris', 'Ann'] sortedStudents = sorted(students, key=len) print(sortedStudents)
코드 실행 결과는 다음과 같습니다:
['Ann', 'Paul', 'Chris', 'Sophie', 'Alexander']
여기서 코드는 문자열 길이를 기준으로 리스트를 정렬했습니다. 세 글자 이름인 Ann이 첫 번째로, 아홉 글자인 Alexander가 마지막에 위치합니다.
위 예제에서는 객체의 길이를 반환하는 Python 내장 함수인 len()을 정렬 기준으로 지정했습니다. 배열의 각 문자열이 len()을 거친 후, 최종 리스트가 정렬됩니다.
마찬가지로 str.upper를 사용해 각 문자열의 대문자 기준 알파벳순으로 정렬하거나, 완전히 다른 Python 함수를 활용해 리스트를 정렬할 수도 있습니다.
JSON 내용 기준으로 정렬하기
key를 사용하면 정렬 방식을 정의하는 자체 함수를 만들 수도 있습니다. 다음은 특정 값을 기준으로 JSON 배열을 정렬하는 예제입니다. 여기서는 학생들의 시험 점수를 기준으로 정렬해 보겠습니다:
def sortFunction(value):
return value["test_score"]
students = [
{
"name": "Sophie",
"test_score": 75
},
{
"name": "Ann",
"test_score": 67
},
{
"name": "Chris",
"test_score": 73
}
]
sortedStudents = sorted(students, key=sortFunction)
print(sortedStudents)
코드 실행 결과는 다음과 같습니다:
[{'name': 'Ann', 'test_score': 67}, {'name': 'Chris', 'test_score': 73}, {'name': 'Sophie', 'test_score': 75}]
코드는 학생들을 시험 점수 기준으로 정렬했습니다.
먼저 프로그램은 호출 시 test_score 값을 기준으로 JSON 배열을 정렬하는 sortFunction이라는 함수를 정의합니다. 그다음 학생 이름과 시험 점수가 담긴 students라는 JSON 배열을 선언합니다.
이후 key로 sortFunction을 지정해 사용자 지정 정렬 함수로 학생들을 정렬하고, 마지막 줄에서 정렬된 리스트를 출력합니다.
마무리
이 튜토리얼에서는 Python의 sort() 함수를 사용해 리스트를 정렬하는 방법을 알아보았습니다. 다양한 데이터 타입에 sort()를 적용하는 방법과 reverse 매개변수로 리스트 순서를 뒤집는 방법을 살펴봤으며, key를 활용한 더 세밀한 정렬 방법도 함께 다루었습니다.
추가로, 원본 리스트를 변경하지 않고 새로운 정렬된 리스트를 얻고 싶다면 sorted() 함수를 사용하는 것도 좋은 방법입니다. Python 코딩에 대해 더 깊이 배우고 싶다면 Python 학습 가이드를 확인해 보세요.