파이썬에서 리스트를 정렬하는 작업은 데이터 처리를 할 때 매우 유용한 기술입니다. 정렬의 기본적인 방법은 파이썬에서 제공하는 내장 함수를 활용하는 것으로, 이는 알고리즘 문제를 해결할 때도 필요한 방법입니다. 이 글에서는 리스트를 정렬하는 여러 가지 방식을 알아보겠습니다.

리스트 정렬의 기본 메서드
파이썬에서 리스트의 요소를 정렬하려면 주로 두 가지 메서드를 사용할 수 있습니다: sort()
와 sorted()
입니다. 이 두 메서드는 리스트를 정렬하는 데 자주 사용되며, 사용 방법에 있어 약간의 차이가 있습니다.
sort() 메서드
sort()
메서드는 리스트 객체의 메서드로, 리스트 자체를 오름차순으로 정렬합니다. 예를 들어, 다음과 같은 코드에서 사용할 수 있습니다.
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort() # 기본적으로 오름차순으로 정렬
print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
이 경우, 기존 리스트인 numbers
는 내부적으로 정렬되며 새로운 리스트가 반환되지 않습니다.
sorted() 함수
반면에 sorted()
함수는 정렬된 새로운 리스트를 반환하는 함수입니다. 이 함수를 사용하면 원본 리스트는 그대로 두고, 정렬된 새로운 리스트를 생성할 수 있습니다.
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
new_numbers = sorted(numbers) # 오름차순으로 정렬한 새로운 리스트 생성
print(new_numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
정리하자면, sort()
는 리스트를 직접 수정하고, sorted()
는 원본 리스트를 유지하며 정렬된 복사본을 반환하는 차이가 있습니다.
리스트 정렬의 기준 설정
리스트를 정렬할 때는 기본 옵션 외에도 정렬 기준을 설정할 수 있는 key
매개변수를 활용할 수 있습니다. 이는 리스트의 특정 요소를 기준으로 정렬하고 싶을 때 유용합니다.
문자열 길이로 정렬하기
예를 들어, 문자열의 길이에 따라 정렬하기 위해서 key=len
을 사용할 수 있습니다.
words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len) # 문자열 길이에 따라 정렬
print(words) # ['date', 'apple', 'banana', 'cherry']
사용자 정의 기준으로 정렬하기
또한, 직접 작성한 함수를 key
인자로 전달하여 정렬 기준을 유연하게 지정할 수 있습니다. 예를 들어, 문자열의 마지막 글자를 기준으로 정렬하는 경우에는 다음과 같이 작성할 수 있습니다.
words = ["apple", "banana", "cherry", "date"]
words.sort(key=lambda x: x[-1]) # 마지막 글자를 기준으로 정렬
print(words) # ['banana', 'apple', 'date', 'cherry']
리스트의 역순 정렬
정렬된 리스트를 내림차순으로 만들고자 할 때는 reverse
매개변수를 사용하면 됩니다. reverse=True
를 설정하면 리스트가 내림차순으로 정렬됩니다.
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort(reverse=True) # 내림차순으로 정렬
print(numbers) # [9, 6, 5, 4, 3, 2, 1, 1]
마찬가지로 sorted()
함수에서도 reverse=True
를 설정할 수 있습니다.
new_numbers = sorted(numbers, reverse=True)
print(new_numbers) # [9, 6, 5, 4, 3, 2, 1, 1]
다중 기준으로 정렬하기
리스트의 요소가 다차원(예: 튜플)일 경우, 여러 기준으로 정렬할 수도 있습니다. 이 때는 key
매개변수에 여러 조건을 담은 튜플을 활용하면 됩니다.
a = [(1, 'a'), (0, 'b'), (5, 'e'), (5, 'd'), (3, 'c')]
sorted_a = sorted(a, key=lambda x: (x[0], x[1])) # 첫 번째 요소로 오름차순 정렬 후, 같은 숫자일 경우 두 번째 요소로 정렬
print(sorted_a) # [(0, 'b'), (1, 'a'), (3, 'c'), (5, 'd'), (5, 'e')]
이와 같이 정렬 기준을 손쉽게 설정함으로써 다양한 형태의 리스트를 원하는 방식으로 정렬할 수 있습니다.

결론
이 글에서는 파이썬에서 리스트를 정렬하는 다양한 방법에 대해 살펴보았습니다. sort()
와 sorted()
메서드는 리스트 정렬의 두 가지 주요 방식이며, key
매개변수를 통해 정렬 기준을 유연하게 커스터마이즈할 수 있습니다. 이와 같은 기법을 익히면 데이터 처리를 보다 효율적으로 수행할 수 있습니다. 리스트 정렬은 데이터 분석 및 알고리즘 구현에서 필수적인 요소이므로, 다양한 사례를 통해 이해도를 높이는 것이 중요합니다.
자주 찾는 질문 Q&A
파이썬에서 리스트를 정렬하는 방법은 무엇인가요?
리스트를 정렬하기 위해 주로 sort()
메서드와 sorted()
함수를 사용합니다. sort()
는 원본 리스트를 직접 수정하며, sorted()
는 새로운 정렬된 리스트를 생성합니다.
리스트를 내림차순으로 정렬하려면 어떻게 하나요?
내림차순으로 정렬하기 위해서는 sort()
또는 sorted()
함수에서 reverse=True
매개변수를 사용합니다. 이 옵션을 설정하면 리스트가 높은 값에서 낮은 값으로 정렬됩니다.
정렬할 때 특정 기준을 설정할 수 있나요?
네, 리스트를 정렬할 때 key
매개변수를 사용하여 특정 기준을 지정할 수 있습니다. 예를 들어, 문자열의 길이나 특정 속성을 기준으로 정렬할 수 있습니다.