정렬 기능은 알고리즘 문제 풀이 뿐만 아니라 솔루션 및 웹사이트 등을 개발할 때에도 매우 중요한 기능이다.
오늘은 파이썬의 내장함수를 통한 기본 정렬 뿐 아니라 사용자 정의 기준에 따른 커스텀 정렬 방법까지 자세히 알아보고자 한다.
파이썬의 기본 정렬
파이썬에서 정렬을 수행하는 가장 기본적인 방법은 sorted()
메소드와 list
자료형의sort()
내장 메소드를 사용하는 것이다. 이 두 방법을 정렬된 결과를 메소드 하나로 쉽게 얻을 수 있도록 해준다.
1. sorted()
메소드
sorted()
메소드는 원본 리스트는 변경하지 않은 채 정렬된 새로운 리스트를 반환한다. 이 메소드는 리스트 뿐만 아니라 모든 반복 가능한 객체에서 사용할 수가 있다 (리스트, 튜플, 문자열 등).
sorted(iterable, key=None, reverse=False)
와 같이 작성하는데, key와 reverse는 생략할 수 있다.
iterable
: 정렬할 수 있는 반복 가능 객체key
: 정렬을 위한 기준이 되는 메소드, 람다식 지정 (Default:None
)reverse
: 값이 참(True
)이면 내림차순 정렬 (Default:False
)
numbers = [3, 1, 4, 1, 5, 9, 2]
print(sorted(numbers)) #[1, 1, 2, 3, 4, 5, 9]
2. sort()
메소드
sort()
메소드는 리스트 객체만 사용할 수 있는 메소드로, 원본 리스트의 순서를 바꿔 정렬한다. 이 메소드는 따로 정렬된 리스트를 반환하지 않는다.
list.sort(key=None, reverse=False)
와 같이 작성하고, 마찬가지로 key와 reverse를 생략할 수 있다.
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers) # 출력: [1, 1, 2, 3, 4, 5, 9]
파이썬의 커스텀 정렬
기본 정렬 방법에 응용하여, 파이썬에서는 key
매개변수를 사용해 커스텀 정렬을 할 수가 있다. 이를 통해 데이터의 특정 특성에 따라 맞춤형 정렬이 가능하다.
1. key
매개변수 내에 작성
key
매개변수는 정렬 기준을 정의하는 데에 사용된다. 이 매개변수 내에 전달 인자로 호출 가능한 함수 혹은 람다 함수를 전달해, 해당 함수의 반환 값을 기준으로 정렬이 이루어진다.
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words) #['date', 'apple', 'banana', 'cherry']
items = [(1, 2), (3, 1), (5, 4)]
sorted_items = sorted(items, key=lambda x: x[1])
print(sorted_items) #[(3, 1), (1, 2), (5, 4)]
2. 사용자 정의 함수 생성
key
매개변수 내에 모두 작성하기에는 가독성이 좋지 않을 정도로 복잡한 기준이 필요한 경우에는 정렬을 위한 사용자 정의함수를 만들어 key
의 전달 인자로 둘 수 있다.
def custom_sort(item):
return item[1] - item[0]
pairs = [(1, 2), (2, 3), (3, 5)]
sorted_pairs = sorted(pairs, key=custom_sort)
print(sorted_pairs) #[(1, 2), (2, 3), (3, 5)]
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬에서 우선순위 큐(Priority Queue)를 구현하는 방법 (0) | 2024.08.27 |
---|---|
파이썬에서 큐(Queue)를 구현하는 방법 (2) | 2024.07.18 |
List와 Tuple (0) | 2024.07.17 |